java - 如何在 nginx conf 文件中指定 URI?

标签 java nginx

我试图理解以下 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/

相关文章:

nginx - 如何在 jwilder/nginx-proxy 中监听 443 端口

Java JLabel 应该填充时却出现白色中心

java - 具有最快运行时间的迭代器,用于占位符

java - Thread.interrupt 返回 false

java - 单元测试 OSGi 组件

python - REST API 框架适用于我的 python 程序而不是数据库

java - @Schedule 在随机时刻执行

nginx - 在 Nginx Web 服务器下的 GRPC 调用中出现 504 超时错误

PHP 应用程序重定向周期

amazon-web-services - 带有 Nginx 和 PHP-FPM 的 AWS EC2 - 不能将 CPU 推到 50% 以上