2011-10-28 88 views
2

我在Node.js應用程序前面有Nginx。我已經設置好了,所以如果URL有/帳戶,它會重定向到HTTPS。我的問題是 - 我如何設置它,以便如果用戶離開/帳戶URL(點擊鏈接到主頁),它會被髮回到HTTP?Nginx - 在離開安全頁面時將HTTPS重定向回HTTP

這裏是我的ngnix.conf:

worker_processes 1; 

error_log logs/error.log; 

pid  logs/nginx.pid; 

events { 
    worker_connections 128; 
} 

http { 
    include  mime.types; 
    default_type application/octet-stream; 

    sendfile  on; 

    server_tokens off; 

    #keepalive_timeout 0; 
    keepalive_timeout 65; 
    tcp_nodelay  on; 
    proxy_buffer_size 128k; 
    proxy_buffers 4 256k; 
    proxy_busy_buffers_size 256k; 

    gzip on; 

    server { 
     listen  80; 
     server_name localhost; 

     location/{ 
      proxy_set_header x-path $uri; 
      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_set_header X-NginX-Proxy true; 
      proxy_pass http://127.0.0.1:3000; 
      proxy_redirect off; 
     } 

     location /account { 
      rewrite ^(.*) https://$host$1 permanent; #redirect to https 
     } 

     error_page 404    /404.html; 

     # redirect server error pages to the static page /50x.html 
     # 
     error_page 500 502 503 504 /50x.html; 
     location = /50x.html { 
      root html; 
     } 

    } 

    server { 
     listen 443; 
     ssl on; 

     ssl_certificate ssl/server.crt; 
     ssl_certificate_key ssl/server.key; 

     location/{ 
      proxy_set_header Host $http_host; 
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
      proxy_set_header X-M-Secure "true"; 
      proxy_redirect off; 
      proxy_max_temp_file_size 0; 
      proxy_pass http://127.0.0.1:3000; 
     } 
    } 
} 

感謝您的任何援助。

回答

8

這是未經測試的。

server { 
    listen 443; 
    ssl on; 

    ssl_certificate ssl/server.crt; 
    ssl_certificate_key ssl/server.key; 

    location /account/ { 
     proxy_set_header Host $http_host; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header X-M-Secure "true"; 
     proxy_redirect off; 
     proxy_max_temp_file_size 0; 
     proxy_pass http://127.0.0.1:3000; 
    } 

    location/{ 
     rewrite ^(.*) http://$host$1 permanent; # redirect to http 
    } 
} 
+0

謝謝,這樣做!現在看起來很明顯。我會爲此投票,但我需要15名代表來做! – ant