回答
收藏
分享
举报
nginx代理之后,大批量静态资源404
提问于2021-08-18 08:22

浏览 1.5k

文章标签

目的是有三个程序 分别是 ip:81(电脑) ip:82(微信) ip:83(微信认证txt),现在目的是通过一个80端口,可以代理上面三个服务 1、总nginx.conf文件配置如下 

server {
listen 80;
server_name localhost;

#client_max_body_size 100m;
#client_body_buffer_size 10m;   


# 3.8 以后必须开启压缩
gzip on;
gzip_static on;
gzip_min_length 1k;
gzip_comp_level 4;
gzip_proxied any;
gzip_types text/plain text/xml text/css;
gzip_vary on;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";

location /{
    proxy_pass http://127.0.0.1:81/;
}
location /wxmp{
    proxy_pass http://127.0.0.1:82/;
}
location /MP_verify_zvSyxzhcbsGuVjwr.txt{
    proxy_pass http://127.0.0.1:83/MP_verify_zvSyxzhcbsGuVjwr.txt;
}}

 2、81项目 的pc.conf配置文件内容如下:

 server {
listen 81;
server_name localhost;
#client_max_body_size 100m;
#client_body_buffer_size 10m;   
root D:/contract/web/contract/;

# 3.8 以后必须开启压缩
gzip on;
gzip_static on;
gzip_min_length 1k;
gzip_comp_level 4;
gzip_proxied any;
gzip_types text/plain text/xml text/css;
gzip_vary on;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
location ~* ^/(actuator|code|auth|admin|gen|daemon|tx|act|monitor|mp|job|pay) {
   proxy_pass http://127.0.0.1:9999;
   #proxy_set_header Host $http_host;
   proxy_connect_timeout 15s;
   proxy_send_timeout 15s;
   proxy_read_timeout 15s;
   proxy_set_header X-Real-IP $remote_addr;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

# 避免端点安全问题
if ($request_uri ~ "/actuator"){
    return 403;
}
}

 3、82端口项目的配置如下:

 server {
listen 82;
server_name localhost;
#client_max_body_size 100m;
#client_body_buffer_size 10m;   
root D:/contract/web/wxmp/;   
# 3.8 以后必须开启压缩
gzip on;
gzip_static on;
gzip_min_length 1k;
gzip_comp_level 4;
gzip_proxied any;
gzip_types text/plain text/xml text/css;
gzip_vary on;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";

location /{
    index index.html index.htm;
}}

 4、83端口的配置文件如下: 

server {
listen 83;
server_name  127.0.0.1;
location /MP_verify_zvSyxzhcbsGuVjwr.txt{  
    alias D:/contract/web/wxauth/MP_verify_zvSyxzhcbsGuVjwr.txt;  #静态css,js路径
    autoindex on;
}
location = /50x.html {
    root   html;
}

} 结果: 现在如果分别用ip:81或者ip:82 或者ip:83/MP_verify_zvSyxzhcbsGuVjwr.txt 都没有问题,但是如果访问的是ip:80 或者ip:80/wxmp 也能够跳转到对应的程序 但是就是资源报错 报404  求助大佬们  谢谢

已修改于2023-03-17 02:11



写下您的回答
发表回答
全部回答(2)

按点赞数排序

按时间排序

可以这么进行调试:
1. error_log 等级设置为 debug
2. 在日志中找到“http init upstream“的字样,然后往下找会看到nginx想后端发送的http请求,可以从这个请求构造curl命令直接访问后端进行查看该资源是啥样的情况

赞同

0

回复举报

回答于2021-08-24 16:08



回复friparia
回复

我觉得是proxy_pass写的有问题,可以看一下代理后的信息,然后阅读指令文档,调整配置。

例如对于82,可能要改成:

位置 /wxmp/(.*)

{  proxy_pass  http://127.0.0.1:82/$1;  }

赞同

0

回复举报

回答于2021-08-18 17:33



回复罗剑锋
回复
提问者
好好少年
这家伙很懒还未留下介绍~
0
文章
1
问答
0
粉丝
相关问答

这个我理解IPv4和IPv6关于 transparent 的设置上是没有区别的,只是需要注意的是,IPv6的IP透传需要glibc版本达到一定的条件,我记得是glibc 2.26以上才支持。

查看命令 rpm -aq | grep glibc

然后配合路由表设置,在连路上抓包可看到真实的client ipv6地址,可以根据这个帖子 实际测一下,亲测有效,测试转发成功了 https://www.nginx.org.cn/article/detail/76

点赞 0
浏览 428