为什么 nginx 将端口 8080 上的请求重定向到端口 80(apache)

为什么 nginx 将端口 8080 上的请求重定向到端口 80(apache)

我在 Ubuntu 12.04 上的 apache2(端口 80)上设置了一个 wordpress 博客,我还在端口 8080 上设置了一个 nginx 来监听同一个博客。我的问题是,每当我尝试在端口 8080 上打开博客时,nginx 都会将请求重定向到 apache,这是不应该发生的。我正在发布 /etc/nginx/sites-enabled/wordpress 的内容

server {
    listen   8080;

    root /var/www;
    index index.php index.html index.htm;

    server_name foobartech.strangled.net:8080;

    location / {
            try_files $uri $uri/ /index.php?q=$uri&$args;
    }

    location /doc/ {
            alias /usr/share/doc/;
            autoindex on;
            allow 127.0.0.1;
            deny all;
    }

    error_page 404 /404.html;

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
            root /usr/share/nginx/www;
    }

    location ~ \.php$ {

            try_files $uri =404;
            fastcgi_pass unix:/var/run/php5-fpm.sock;
            fastcgi_index index.php;
            include fastcgi_params;
            fastcgi_param   SERVER_PORT 8080;
            port_in_redirect off;
    }

我还设置了 cgi.fix_pathinfo=0

在 /etc/php5/fpm/php.ini 中

答案1

这是 WordPress 的一个限制。它会遵循您在选项中设置的 URL,因此每个请求/链接都会重定向到站点 URL,默认情况下使用端口 80。

http://wordpress.org/support/topic/alternate-port-setup

答案2

我解决了!方法如下:

编辑当前主题的 function.php 并在打开 php 标签后添加以下行 remove_filter('template_redirect','redirect_canonical'); 保存并退出

现在打开 wp-includes/ms-settings.php 并找到以下行(行号:~23)

if ( !isset( $current_site ) || !isset( $current_blog ) ) {

在此行之后添加:

$_SERVER['HTTP_HOST'] = preg_replace( '|:\d+$|', '', $_SERVER['HTTP_HOST'] );

然后保存并退出。重新启动 apache2 和 nginx,并使用 curl -I IP 检查请求是否被重定向。

相关内容