当前位置: 首页 > 知识库问答 >
问题:

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

刘丰羽
2023-03-14

我有一个Nginx服务器托管一个web应用程序,当直接访问时工作正常。其html" target="_blank">配置如下

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”失败(2:没有这样的文件或目录)

服务器er1日志中没有错误。为什么nginx在server2中寻找静态文件,而我已经将它设置为将代理反向设置为server1

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

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

我错过了什么?

共有1个答案

巫马英豪
2023-03-14

您的regexp位置与您的请求/app/css/app.css匹配,并拦截来自代理的请求。这就是regexplocation的工作原理。若要防止这种情况,请对应用程序位置使用^~修饰符:

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

这将阻止regexp位置匹配。

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

 类似资料:
  • 我试着设置nginx来服务我的node.js应用程序静态文件。问题是,当我试图得到我的文件时,我的状态是403禁止的。 当我尝试下载一个文件从 /root/appJs/public/css/style.css我写http://sitename.com/css/style.css我retive 403禁忌状态。我已经在一些论坛上寻找解决方案,但没有

  • 问题内容: 我当前的nginx配置是这样的: 我对nginx非常陌生,但是至少我知道nginx在提供静态文件方面比node / express好。如何配置服务器,以便Nginx提供静态文件? 问题答案: 我使用以下新配置解决了该问题: 感谢以下Stack Overflow帖子:

  • 我从Apache切换到Nginx,使用apache,皮肤文件夹中的所有静态文件(图像、css、javascript)都直接由Apache提供服务。 示例: 我读了一些关于Nginx和Plone的文档,但我没有看到。下面是Plone.orgconf的例子:https://github.com/plone/plone-org-nginx/blob/master/nginx.conf 所以,我的问题是:

  • 使用nginx作为前端的反向代理将请求传递给应用是可行的。然而,只有nginx 1.4版本以上才支持WebSocket协议。下面是nginx代理HTTP和WebSocket请求的一个最基本的配置: server { listen 80; server_name _; location / { include proxy_params; pro

  • 本文向大家介绍抛弃Nginx使用nodejs做反向代理服务器,包括了抛弃Nginx使用nodejs做反向代理服务器的使用技巧和注意事项,需要的朋友参考一下 时下不少场景,都是申请一个 VPS 主机来托管运行 Web 项目的,小弟我也不例外,购买了一个小型的 Win 03 VPS 使用着。在使用的过程中,面临一个问题,就是同一类型的服务端环境还好——但如果是一个 PHP、一个 ASP、 一个 JSP

  • 我是Kubernetes的新手,想了解如何向外部世界公开在Kubernetes中运行的服务。我已经使用集群上的节点端口公开了它。例如:一个服务在主机上公开端口31234,我可以通过https://kubeserverip:31234从另一个服务器访问该服务。