为什么 nginx 在监听备用端口时会重定向端口 80?

为什么 nginx 在监听备用端口时会重定向端口 80?

我有几个虚拟主机监听 80 端口,还有一个虚拟主机监听 8080 端口。它们有不同的主机名。

当连接到端口 8080 时,nginx 提供 301 并重定向到端口 80 上的相同主机名。这似乎来自正确的虚拟主机,因为 301 出现在所需目标的访问日志中。

知道为什么会发生这种情况吗?

服务器块具有快速 cgi 和一些重写,如下所示(并且在端口 80 上 100% 工作)

 server {
    listen       8080;
    server_name  myhost.local;
    root         /path/to/httpdocs;
    access_log   /path/to/log/access.log main;
    error_log    /path/to/log/error.log  warn;

    location / {
        index  index.php;
        # rewrite clean URLs for wordpress
        if (-e $request_filename) {
          break;
        }
        rewrite ^/(.+)$ /index.php?q=$1 last;
    }

    # Process PHP files with fastcgi
    location ~ \.php$ {
      if ( !-f $request_filename ) {
         return 404;
      }
      include /etc/nginx/conf/php-fastcgi.conf;
      fastcgi_pass   127.0.0.1:8890;
      fastcgi_index  index.php;
    }

}

答案1

有一个名为 nginx 核心模块指令端口重定向您可能需要将其设置为“关闭”以避免这种情况。

像这样:

location ~ \.php$ {
  if ( !-f $request_filename ) {
     return 404;
  }
  include /etc/nginx/conf/php-fastcgi.conf;
  fastcgi_pass   127.0.0.1:8890;
  fastcgi_index  index.php;
  port_in_redirect off;
}

这应该可以解决问题。

答案2

我遇到了和你一样的问题。我想在同一个域和服务器上安装 2 个 wordpress 实例,但使用不同的端口。Wordpress 确实重定向到默认端口(80,或 SSL 的 443)。我通过转到 Wordpress 管理面板并在“常规”下将 更改为http://example.com“解决了这个http://example.com:xx问题,其中 xx 是您希望 Wordpress 实例监听的端口。

答案3

我认为是 Wordpress 安装在 PHP 级别强制重定向。

相关内容