Apache-2.2

為什麼nginx將埠8080上的請求重定向到埠80(apache)

  • February 20, 2014

我在 Ubuntu 12.04 上的 apache2(埠 80)上有一個 wordpress 部落格設置,我還有一個 nginx 設置在埠 8080 上偵聽為同一個部落格提供服務。我的問題是,每當我嘗試在埠 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

這是 WordPress 的限制。它遵循您在選項中設置的 URL,因此每個請求/連結都將被重定向到預設使用埠 80 的站點 URL。

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

我解決了!!就是這樣:

編輯目前主題的 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 檢查請求沒有被重定向。

引用自:https://serverfault.com/questions/576715