gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 01:11:59 27 4
gpt4 key购买 nike

我有一个 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 时

[error] 6601#0: *1 open() "/data/www/app/css/app.css" failed (2: No such file or directory)

并且服务器 1 日志中没有错误。为什么 nginx 在服务器 2 中寻找静态文件,当我将它设置为服务器 1 的反向代理时,相同的设置在 apache 中工作正常

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

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

我错过了什么?

最佳答案

你有正则表达式 location 匹配你的请求 /app/css/app.css 并拦截来自代理的请求。这就是正则表达式 location 的工作原理。为防止这种情况,请为您的应用位置使用 ^~ 修饰符:

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

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

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

关于Nginx 反向代理到另一个提供静态文件的 nginx 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24052519/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com