2011-11-06 76 views
3

我最近設置了一個Nginx服務器來託管wordpress安裝,並且在服務器前面使用Varnish作爲反向代理。 Varnish運行在80端口,所以我建立了Nginx來監聽80並重定向。不幸的是,重定向時,端口8080被附加到nginx請求。Nginx的port_in_redirect不工作?

包括port_in_redirect off似乎是這個問題的一般解決方案,但它似乎並沒有爲我工作。我已附加下面的/sites-enabled/default配置。我做錯了什麼? php重定向似乎工作正常,它只在location /失敗。

/sites-enabled/default

server { 
    listen 8080 default; 
    server_name "" xxx.xxx.xxx.xxx; #just using IP here (no domain yet) 

    port_in_redirect off; 
    server_name_in_redirect off; 

    access_log /var/log/nginx/localhost.access.log; 


    location/{ 
      root /var/www/site/html/; 
      index index index.php; 
      try_files $uri/ $uri /index.php?q=$uri&$args; 
    } 

    location ~ .php$ { 
      fastcgi_split_path_info ^(.+.php)(.*)$; 
      fastcgi_pass backend; 
      fastcgi_index index.php; 
      fastcgi_param SCRIPT_FILENAME /var/www/site/html/$fastcgi_script_name; 
      include fastcgi_params; 
      fastcgi_param QUERY_STRING  $query_string; 
      fastcgi_param REQUEST_METHOD $request_method; 
      fastcgi_param CONTENT_TYPE  $content_type; 
      fastcgi_param CONTENT_LENGTH $content_length; 
      fastcgi_intercept_errors  on; 
      fastcgi_ignore_client_abort  off; 
      fastcgi_connect_timeout 60; 
      fastcgi_send_timeout 180; 
      fastcgi_read_timeout 180; 
      fastcgi_buffer_size 128k; 
      fastcgi_buffers 4 256k; 
      fastcgi_busy_buffers_size 256k; 
      fastcgi_temp_file_write_size 256k; 
      fastcgi_param SERVER_PORT 80; 
    } 

    location ~ /.ht { 
     deny all; 
    } 
    location ~ /.git { 
     deny all; 
    } 
    location ~ /.svn { 
     deny all; 
    } 

} 

upstream backend { 
    server 127.0.0.1:9000; 
} 

nginx.conf

user www-data; 
worker_processes 1; 

error_log /var/log/nginx/error.log debug; 
pid  /var/run/nginx.pid; 

events { 
    worker_connections 1024; 
    multi_accept on; 
} 

http { 
    include  /etc/nginx/mime.types; 

    access_log /var/log/nginx/access.log; 

    sendfile  on; 
    tcp_nopush  off; 

    keepalive_timeout 30; 
    tcp_nodelay  on; 

    gzip on; 
    gzip_proxied any; 
    gzip_disable "MSIE [1-6]\.(?!.*SV1)"; 
    gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript; 

    include /etc/nginx/conf.d/*.conf; 
    include /etc/nginx/sites-enabled/*; 
} 

nginx的:nginx的版本:nginx的/ 1.0.9

回答

3

其實,剛剛整理它。簡單的錯誤 - 在WordPress的管理網站wp-admin > Settings > WordPress address (URL)Site address (URL)都有在端口8080的URL!因此重定向。上述設置工作正常。

如果這樣不能解決您的問題,我學到的一個提示是在您的index.php中添加print_r($_SERVER["SERVER_PORT"]);,以確保您從fastcgi中獲得正確的端口(在我的情況下爲80)。

希望這個簡單的步驟可以節省一些人的時間!

0

另一種解決方案是讓你的Nginx服務器在你的本地主機IP上監聽127.0.0.1或[:: 1](如果你有IPv6 - 也可以在端口80或8080上接入IPv4),那麼在您用於Nginx服務器模塊的相同端口上,您的外部IP地址xx.xx.xx.xx或[::]會讓Varnish聽到外部世界的聲音。那麼你不必重定向或推遲任何事情。