https不会重定向到上游的mongrel

时间:2010-03-25 02:58:50

标签: nginx

正常的http对我来说对nginx和mongrel很好,但是当我尝试使用https时,我被引导到“欢迎来到nginx页面”。

 http {
#    passenger_root /opt/passenger-2.2.11;
#    passenger_ruby /usr/bin/ruby1.8;

include       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  logs/access.log  main;

sendfile        on;
#tcp_nopush     on;

#keepalive_timeout  0;
keepalive_timeout  65;

 upstream mongrel {
     server 00.000.000.000:8000;
     server 00.000.000.000:8001;
 }

   server {
    listen       443;
     server_name domain.com;


    ssl                  on;
    ssl_certificate      /etc/ssl/localcerts/domain_combined.crt;
    ssl_certificate_key  /etc/ssl/localcerts/www.domain.com.key;


   #    ssl_session_timeout  5m;

#    ssl_protocols  SSLv2 SSLv3 TLSv1;
#    ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
#    ssl_prefer_server_ciphers   on;

    location / {
        root   /current/public/;
         index  index.html index.htm;

     proxy_set_header X_FORWARDED_PROTO https;
       proxy_set_header  X-Real-IP        $remote_addr;
  proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
  proxy_set_header  Host             $http_host;
  proxy_redirect    off;
  proxy_pass        http://mongrel;

    }
}

}

1 个答案:

答案 0 :(得分:0)

您是否有端口80的明确server条目?可能是nginx默认指令正在拦截常规HTTP流量。

添加另一个服务器块以确保:

server {
  listen 80; 
  server_name domain.com www.domain.com;

  rewrite ^(.*) https://domain.com$1 permanent;  
}

这会将您应用的所有流量重定向到https,即使它不是您最终想要发生的,至少您知道您错过了非https块,然后您可以将其替换为指令你需要。