nginxredirect回remote_addr IP

我试图设置nginx 1.0.12作为Apache 2.2.15的代理,但面临一个奇怪的问题。 我连续三天无法解决。 我有testing网站ccraft.info并已安装roundcube / roundcube子目录。 所以这里是问题:

如果您尝试打开http://c-craft.info/roundcube,您将得到奇怪的redirect到您自己的IP地址。 所以似乎nginx试图从remote_addr下载静态文件。 但是,如果你将添加尾随斜线像圆形/这将工作。

另一个例子:尝试打开http://www.contra.lv – 你也将redirect回你自己的IP地址,并再次尝试从remote_addr下载静态文件。

有趣的是,通过Apache连接工程很好:

c-craft.info:9091/roundcube

contra.lv:9091

我真的需要你的build议如何解决它,因为我卡住…这是我目前的configuration文件:

nginx.conf

user nginx; worker_processes 2; pid /var/run/nginx.pid; events { worker_connections 2048; use epoll; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] $request ' '"$status" $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; client_max_body_size 64m; client_body_buffer_size 256k; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; gzip on; gzip_vary on; gzip_comp_level 6; gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; gzip_buffers 16 8k; gzip_disable "MSIE [1-6].(?!.*SV1)"; include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; } 

启用站点-/默认

 server { listen 80 default; server_name _; server_name_in_redirect off; server_tokens off; access_log /var/log/nginx/default.access.log; error_log /var/log/nginx/default.error.log; location / { proxy_pass http://8*.***.**.**6:9091; include /etc/nginx/proxy.conf; } } 

启用站点-/ C-craft.info.conf

 server { listen 80; server_name www.c-craft.info c-craft.info; server_name_in_redirect off; access_log /var/log/nginx/c-craft.info_access_log; error_log /var/log/nginx/c-craft.info_error_log; location / { proxy_pass http://8*.***.**.**6:9091; include /etc/nginx/proxy.conf; } location ~* ^.+\.(jpe?g|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar)$ { expires 30d; root /home/c-craft/public_html; } } 

启用站点-/ contra.lv.conf

 server { listen 8*.***.**.**6:80; server_name www.contra.lv contra.lv; access_log /var/log/nginx/contra.lv_nginx_access_log; error_log /var/log/nginx/contra.lv_nginx_error_log; location / { proxy_pass http://8*.***.**.**6:9091; include /etc/nginx/proxy.conf; } location ~* ^.+\.(jpe?g|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar)$ { expires 30d; root /home/contra/public_html; } } 

proxy.conf

 proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 16k; proxy_buffers 32 8k; proxy_busy_buffers_size 64k; 

在Apache的httpd.conf中我有:

 Listen 9091 UseCanonicalName Off <VirtualHost 8*.***.**.**6:9091> 

提前感谢您的任何build议。

你的proxy_pass指令应该都有尾部的斜线,例如,从你的默认configuration(修改);

  server { listen 80 default; server_name _; server_name_in_redirect off; server_tokens off; access_log /var/log/nginx/default.access.log; error_log /var/log/nginx/default.error.log; location / { proxy_pass http://8*.***.**.**6:9091/; include /etc/nginx/proxy.conf; } } 

如果你像上面那样更新所有的proxy_pass语句来包含最后一个斜杠,你应该会发现你不再需要你请求的URL中的斜线,因此你不应该再看到你自己的IP地址的错误回报描述。