Nginx反向代理到另一个提供静态文件的Nginx服务器

 陈珍贵263483 发布于 2023-01-11 15:45

我有一台Nginx服务器托管一个Web应用程序,当直接访问该应用程序时可以正常工作。其配置如下

server {
    listen 8000 default_server;

    listen [::]:8000 default_server ipv6only=on;

    root /data/www/ ;
    server_name server1.com;

    location / {
        try_files $uri $uri/ =404;
    }

    location /app/ {

    }   
}

现在我必须从另一台Nginx服务器提供此应用程序,所以我设置了如下的反向代理

server {
    listen 80 default_server;

    listen [::]:80 default_server ipv6only=on;

    root /data/www/ ;
    server_name server2.com;

    location / {
        try_files $uri $uri/ =404;
    }

    location /app/ {
        proxy_pass http://server1.com:8000/app/;
    }
}   

当我从server2访问该应用程序时,出现以下错误,例如当我访问http:server2.com/app/css/app.css时

[错误] 6601#0:* 1 open()“ /data/www/app/css/app.css”失败(2:没有此类文件或目录)

并且serv er1日志中没有错误。当我将它设置为反向代理到server1时,nginx为什么要在server2中寻找静态文件?

ProxyPass / app / http:server1:8000 / app /

ProxyPassReverse / app / http:server1:8000 / app /

我想念什么?

1 个回答
  • 您有location与您的请求匹配的正则表达式,/app/css/app.css并拦截了来自代理的请求。这就是regexp location的工作方式。为防止^~在您的应用位置使用此use 修饰符,请执行以下操作:

    location ^~ /app/ {
        proxy_pass ...;
    }
    

    这将阻止正则表达式location匹配。

    文档:http : //nginx.org/r/location

    2023-01-11 15:49 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有