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

我在Ubuntu 12.04的apache2(port 80)上有一个WordPress的博客设置,我也有一个监听端口8080的nginx设置,服务于同一个博客。 我的问题是,每当我尝试打开端口8080上的博客,nginx将请求redirect到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中

这是WordPress的限制。 它遵循您在选项中设置的URL,以便每个请求/链接将被redirect到站点URL,默认情况下使用端口80。

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

我解决了它! 就是这样:

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

现在打开你的wp-includes / ms-settings.php并find以下行(行号:〜23)

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

在这行后添加:

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

并保存并退出。 重新启动apache2和nginx并检查curl -I IP,请求没有被redirect。