我有几个虚拟主机监听 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 级别强制重定向。