如何在不添加端口号的情况下使用 NginX 进行 301 重定向?

How to 301 redirect with NginX without adding port number?

我需要用nginx将整个目录的内容301重定向到另一个目录。虽然我的配置有效,但不幸的是它也暴露了端口号。我猜现在这是一个副作用,因为特定域的入站流量是通过 HAProxy ACL 规则处理到 8000 端口的,而 url 本身是端口 80。

这是我的 nginx 配置:

server {
    listen       8000;
    port_in_redirect off;
    location ~* ^/data/dir1/(.*)$ {
            return 301 /data/dir2/;
    }
    ...

它从 URL 重定向: 域名.com/data/dir1/... 到: domain.com:8000/data/dir2/...

如何去掉 URL 重定向中的 8000?

您可以使用不带端口号的绝对 URL:

return 301 http://domain.com/data/dir2/;

HAProxy 应该完成剩下的工作。