首页 > 解决方案 > Nginx 重定向到不需要的端口

问题描述

我正在尝试在我自己的 pi 服务器(测试站点)上托管 2 个不同的网站 - 一个静态非 wordpress 站点和一个 wordpress 子域站点。每当访问子域站点 test.mysite.co.uk 时,它会在不需要的端口 4323 上加载 test.mysite.co.uk:4323。但是,主 mysite.co.uk 站点可以正确加载。

最初,我一直在本地运行这些测试站点(在不同的端口上 - 端口 4321 上的主站点和 4323 上的子域),直到我决定使用真实域名部署它们。但是,您可能无法将 DNS 配置为指向特定的 IP 和端口(可能 DNS 记录仅指向 IP),因此我将两个域的 conf 文件都更改为侦听端口 80(显然您可以定义服务器名称告诉 nginx 加载哪个站点 - 称为虚拟主机?)。请注意,我有 mysite.co.uk 和 test.mysite.co.uk 的 DNS A 记录,它们都指向我路由器的同一个公共 IP 地址。

任何地方都没有对端口 4323 的引用,所以我很困惑为什么子域仍然坚持转发到该端口。我一直在 chrome 上使用隐身模式,所以应该没有缓存问题。我的路由器将外部端口 80 转发到内部端口 80,并且我已经多次重启了 nginx 服务器。我的 pi 本身的默认端口不再是 80。

这是 /etc/nginx/sites-available/mysite.co.uk.conf 文件:

server {
    listen 80;
    listen [::]:80;

    root /var/www/mysite.co.uk;

    # Add index.php to the list if you are using PHP
    index index.html index.htm index.nginx-debian.html;

    server_name mysite.co.uk www.mysite.co.uk;

    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        try_files $uri $uri/ =404;
    }
}

这是 /etc/nginx/sites-available/test.mysite.co.uk.conf 文件:

upstream wp-php-handler {
        server unix:/var/run/php/php7.4-fpm.sock;
}
server {
        listen 80;
        server_name test.mysite.co.uk;
        root /var/www/wp.mysite.co.uk;
        index index.php;
        location / {
                try_files $uri $uri/ /index.php?$args;
        }
        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass wp-php-handler;
        }
}

两个 .conf 文件也符号链接到它们各自启用站点的文件夹。

不确定这是否意味着除了在 Web 浏览器中加载 local_ip:80 (或没有 :80 假设它假定为 :80 )返回 Apache2 Ubuntu 默认页面。

根据这篇文章,我尝试添加port_in_redirect offautoindex onproxy_redirect http://test.mysite.co.uk:4323/ http://test.mysite.co.uk/无济于事。

有没有人知道我做错了什么?

更新:

我设法创建了另一个测试非 wordpress 站点,它与第一个非 wordpress 站点完全相同,但称为 copy.mysite.co.uk,这似乎可以工作。我假设 wordpress 测试站点的问题可能与它的配置有关(尽管我在这里列出的代码看不到任何问题)?

标签: nginxwebserverportforwarding

解决方案


推荐阅读