我试图理解以下 nginx conf 文件 ( from here )。我应该用什么替换 @example_app
?
server {
listen 80;
server_name example.com;
rewrite ^(.+?)/?$ http://www.example.com$1 permanent;
}
server {
listen 80;
server_name www.example.com;
root /var/www/example.com/public_html;
location / {
try_files $uri @example_app;
}
location @example_app {
proxy_pass http://localhost:5000;
}
}
<小时/>
编辑
我将我的配置文件更改为这个。这是否更好?我改编自this answer 。我还将我的域名和 IP 地址添加到 /etc/hosts
upstream ring {
server 127.0.0.1:8080 fail_timeout=0;
}
server {
root /usr/share/nginx/html;
server_name localhost;
location / {
try_files $uri $uri/ @ring;
}
location @ring {
proxy_redirect off;
proxy_buffering off;
proxy_set_header Host $http_host;
proxy_pass http://ring;
}
location ~ ^/(assets|images|javascripts/stylesheets|swfs|system)/ {
expires max;
add_header Cache-Control public;
}
<小时/>
最佳答案
如果您不想,则无需将 @example_app
替换为任何内容。它只是一个命名位置,可以轻松更改为@whatever
。您只需要确保,如果您使用 try_files
引用命名位置,则需要在配置文件中定义相同的位置。
Reddit 上的评论很好地解释了配置,但需要重申一下:
1) 第一个服务器 block 将所有请求从 example.com 重定向到 www.example.com
2) 第二个服务器 block 捕获对 www.example.com 的请求
3) location/
block 捕获此服务器 block 内的所有请求,并尝试 try_files
中的选项列表 - 首先尝试加载该路径中的任何匹配文件,否则使用指定的文件位置@example_app
4) location @example_app
block 是一个命名位置,代理将请求传递到同一服务器上的端口 5000。
关于java - 如何在 nginx conf 文件中指定 URI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20733567/