Busqué en Google este problema y encontré muchas referencias, pero ninguna de las soluciones o soluciones parecen funcionar en mi caso. Tengo un contenedor acoplable con un Nginx que actúa como un proxy inverso SSL para la autenticación. Tengo un contenedor Apache que sirve una aplicación Laravel. Siempre obtengo el html pero no hay CSS ni imágenes. En Chrome obtengo:
Recurso interpretado como hoja de estilo pero transferido con texto tipo MIME / html:
Aquí está mi default.conf en nginx / sites /
upstream app {
server 172.18.0.6;
}
server {
listen 443 ssl default_server;
listen [::]:443 ssl default_server ipv6only=on;
server_name rocket.example.com localhost;
root /var/www/public;
index index.php index.html index.htm;
include /etc/nginx/mime.types;
# tell users to go to SSL version this time
if ($ssl_protocol = "") {
rewrite ^ https://$server_name$request_uri? permanent;
}
add_header Strict-Transport-Security "max-age=15768000";
ssl_certificate /etc/nginx/rocket.crt;
ssl_certificate_key /etc/nginx/rocket.key;
ssl_dhparam /etc/nginx/rocket_dhparam.pem;
ssl_session_cache shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128:AES256:AES:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK";
error_page 497 https://$host:$server_port$request_uri;
ssl_verify_client on;
ssl_verify_depth 10;
ssl_client_certificate /etc/nginx/allcerts.pem;
location / {
try_files $uri $uri/ /index.php$is_args$args;
include /etc/nginx/mime.types;
}
location ~ \.php$ {
proxy_pass http://app;
proxy_http_version 1.1;
proxy_set_header Host $host:$server_port;
proxy_set_header Referer $http_referer;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Ssl on;
proxy_set_header X-Nginx-Proxy true;
proxy_set_header X-Client-Verify $ssl_client_verify;
proxy_set_header X-Client-DN $ssl_client_s_dn;
proxy_set_header X-SSL-Issuer $ssl_client_i_dn;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_redirect off;
proxy_send_timeout 86400;
proxy_read_timeout 86400;
include /etc/nginx/mime.types;
}
location ~ /\.ht {
deny all;
}
}
Como mencioné, ninguna de las otras soluciones ha funcionado. ¿Alguien puede ver un error que podría estar causando esto? He puesto las directivas proxy_ en ambas ubicaciones, con el mismo efecto. Cualquier ayuda sería extremadamente apreciada.
nginx
reverse-proxy
Jamie Thompson
fuente
fuente
Respuestas:
La ubicación que contiene proxy_pass está configurada solo para archivos proxy de PHP. Esta linea aqui
Lo primero que probaría es mover todo ese bloque al bloque principal "ubicación /".
Su reescritura https utiliza una declaración if, que no es ideal: lea " if is evil ". Si desea que los clientes usen https, la mejor manera es crear una serie de servidores para reenviar, como este
fuente