【问题标题】:nginx always adding trailing slash after domainnginx 总是在域后添加斜杠
【发布时间】:2020-05-28 23:22:07
【问题描述】:

我一直在寻找,但我看不出我做错了什么。

基本上我有两个域,并希望根据访问的一个域路由到后端服务。

  • clientkey.local
  • clientkey.strapi.local

当我访问这些域中的每一个时,它会将网址重写为:

  • clientkey.local/
  • clientkey.strapi.local/

如果我只是访问基本域,那么添加额外的斜线是没有意义的。如果我愿意,我可以添加尾部斜杠并且仍然会出现在主页上,但它不应该自动将我重定向到那里。下面是我的 nginx 配置。

有什么想法吗?如果这很重要,我正在使用 docker-compose。我觉得我错过了一些明显的东西。

worker_processes 4;

events { worker_connections 1024; }

http { 
    upstream strapi_servers {
        server strapi:1337;
    }

    upstream gallery_servers {
        server gallery;
    }

    server {
        listen 80;
        server_name clientkey.strapi.local;
        location / {
            proxy_pass http://strapi_servers;
            proxy_http_version 1.1;
            proxy_set_header X-Forwarded-Host $host;
            proxy_set_header X-Forwarded-Server $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header Host $http_host;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "Upgrade";
            proxy_pass_request_headers on;
        }
    }

    server {
        listen 80;
        server_name clientkey.local;
        location / {
            proxy_pass http://gallery_servers;
            proxy_redirect     off;
            proxy_set_header   Host $host;
            proxy_set_header   X-Real-IP $remote_addr;
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header   X-Forwarded-Host $server_name;
        }
    }
}

【问题讨论】:

  • “如果我只是访问基本域,那么添加额外的斜杠是没有意义的” - / 你正在请求域/站点根目录。没有——你是在寻求空虚吗?我认为没有请求“只是域”这样的事情。您必须在其上请求 一些 URI
  • 当然,那为什么如果你去stackoverflow.com它不显示stackoverflow.com/?
  • 只是显示问题。浏览器不显示斜线,但它实际上是在请求域的根,即/。它不能从域/主机请求“无”。
  • 我认为您的问题是为什么浏览器在一种情况下(您的域)显示斜杠,而在另一种情况下不显示。但我不认为底层服务器逻辑不同(总是有斜线请求,因为空请求是不可能的)。要确认我的想法,请参阅this question
  • 我的浏览器显示斜线。我怀疑这与我的主机文件有关。我在我的主机文件中设置了 127.0.0.1 clientkey.local。当我访问“localhost”时,我的浏览器中没有出现斜杠,但是当我转到 clientkey.local 时,它确实显示了斜杠。

标签: nginx docker-compose


【解决方案1】:

快速测试表明,非公共 TLD 网站(Chromium/Chrome)没有隐藏斜线。

换句话说,如果 TLD 不是真实的,则不会省略斜线。

  • example.local - 显示斜线
  • example.anyting-non-real - 显示斜线
  • example.com - 隐藏斜线

【讨论】:

  • 确认,谢谢。更改了我的主机文件,现在已解决。
猜你喜欢
  • 1970-01-01
  • 2012-03-25
  • 2016-11-21
  • 2021-08-24
  • 2011-02-04
  • 1970-01-01
  • 1970-01-01
  • 2017-05-27
  • 1970-01-01
相关资源
最近更新 更多