nginx反向代理后访问404
通过nginx反向代理后网站部分资源加载不正常,页面不能正常显示
下边这种全部拦截的方式可以正常访问网站
正确配置1
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name ddns.aaa.com;
ssl_certificate /opt/openresty/nginx/conf/cert/chunyu.work.pem;
ssl_certificate_key /opt/openresty/nginx/conf/cert/chunyu.work.key;
access_log logs/ddns-go.log main;
location / {
proxy_pass http://172.31.50.25:9876;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_max_temp_file_size 0;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
}
错误配置
想通过拦截jp1,jp2的方式,使用同一个域名访问不同网站,
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name ddns.aaa.com;
ssl_certificate /opt/openresty/nginx/conf/cert/chunyu.work.pem;
ssl_certificate_key /opt/openresty/nginx/conf/cert/chunyu.work.key;
access_log logs/ddns-go.log main;
location /jp1 {
proxy_pass http://172.31.50.25:9876;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_max_temp_file_size 0;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
}
网站样式加载错误,甚至不能正常访问
正确配置
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name ddns.chunyu.work;
ssl_certificate /opt/openresty/nginx/conf/cert/chunyu.work.pem;
ssl_certificate_key /opt/openresty/nginx/conf/cert/chunyu.work.key;
access_log logs/ddns-go.log main;
location /jp1/ {
proxy_pass http://jp1.chunyu.work:9876/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Connection "";
proxy_max_temp_file_size 0;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
}
如果还是有静态资源访问404,可以增加下边配置
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
proxy_pass http://jp1.chunyu.work:9876/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location ~ .*\.(js|css)?$ {
proxy_pass http://jp1.chunyu.work:9876/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
expires 12h;
}
比如请求 /a/b.html
location /a {
proxy_pass http://server;
}
location /a/ {
proxy_pass http://server/;
}
如上两个匹配成功后,实际代理的目标url分别是
http://server/a/b.html (把/a/b.html拼接到http://server之后)
http://server/b.html (把/a/b.html的/a/去掉之后,拼接到http://server/之后)
nginx反向代理后访问404
https://www.hechunyu.com/archives/nginxfan-xiang-dai-li-hou-fang-wen-404