2015-04-01 76 views
15

我现在nginx的配置是这样的:如何从充当nodejs服务器反向代理的nginx服务器提供静态文件?

upstream nodejs { 
    server 127.0.0.1:3000; 
} 

server { 
    listen 8080; 
    server_name localhost; 
    root ~/workspace/test/app; 
    index index.html; 

    location/{ 
     proxy_pass http://nodejs; 
     proxy_set_header Host $host ; 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    } 
} 

我非常非常新的nginx的,但起码我知道nginx的比节点/快递服务在静态文件更好。如何配置服务器以便nginx提供静态文件?

+0

如果你要这么居高临下,至少可以把它链接起来,然后我会删除我的曲目estion。我已经看了,而且我很难找到它。 – m0meni 2015-04-01 05:44:49

回答

16

我解决了它使用这个新的配置:

upstream nodejs { 
    server localhost:3000; 
} 

server { 
    listen 8080; 
    server_name localhost; 
    root ~/workspace/test/app; 

    location/{ 
     try_files $uri $uri/ @nodejs; 
    } 

    location @nodejs { 
     proxy_redirect off; 
     proxy_http_version 1.1; 
     proxy_pass http://nodejs; 
     proxy_set_header Host $host ; 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    } 
} 

感谢以下堆栈溢出后:


How to serve all existing static files directly with NGINX, but proxy the rest to a backend server.

+0

'try_files $ uri/$ uri @nodejs;'应该是'try_files $ uri $ uri/@nodejs;' – 2015-04-02 13:05:12

+0

我的错我拷贝了错误。谢谢。 – m0meni 2015-04-02 13:58:10

+0

这个配置意味着首先nginx尝试提供静态文件,如果找不到,那么它会重定向到nodejs服务器? – Santosh 2016-05-21 07:10:47

16

您可能需要为server中的另一个location块设置静态文件。

location /static { 
    alias /path/to/static/files; 
} 

这使用alias directive。 然后,您可以点击文件在localhost:8080/static/some_file.css

P.S.您不需要您当前设置的rootindex。 (root是一种有轻微difference in usage类似alias

相关问题