NGINX服务所有静态文件并将其他人转发到代理而不用/给403?

时间:2015-06-16 11:23:58

标签: node.js nginx proxy

我正在尝试将nginx服务器配置为充当节点应用程序的代理。我想要的是将nginx提供的任何静态文件和所有其他路径转发到Node.js应用程序(包括/ path)。

我看过以下问题/答案:How to serve all existing static files directly with NGINX, but proxy the rest to a backend server.

按照指示,我已按照以下方式配置了我的网站配置:

server {
  server_name subdom.domain.com;
  listen 80;
  location / {
    root /var/www/application/public_html;
    try_files $uri $uri/ @application;
  }
  location @application {
    proxy_set_header X-Real-IP  $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://localhost:3000;
  }
}

然而,当浏览到subdom.domain.com/时,我得到403 Forbidden。我猜这是因为nginx无法找到默认文档,但我想将默认文档发送到代理,任何想法如何做到这一点?

1 个答案:

答案 0 :(得分:2)

这应该做的工作:

  server {
    server_name subdom.domain.com;
    listen 80;

    location / {
        try_files $uri;

        proxy_set_header X - Real - IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X - Forwarded - For $proxy_add_x_forwarded_for;
        proxy_pass http: //localhost:3000;

    }
  }

对于每个网址的简要说明,它会找到一个文件(try_file),以及其尝试代理的其他内容