Nginx
使所有內容都轉到 https,除了 rails、nginx、passenger 中的一個 url
嘿,我有一個 Rails 應用程序,我已經將幾乎所有流量重定向到使用 https。但是,我的應用程序中有一條特定的路徑,我需要通過普通的 http 訪問它,比如
somedomain.com/special
.我想知道這是否可能,因為我的 rails 應用程序似乎是在 https 塊中定義的。也許如果有某種方法可以在 http 和 https 上託管它,那麼如果不是,則將所有流量從 http 重定向到 https
/special
?(我還需要/RPC2
在 http 上,但這不是 rails 路徑,這就是為什麼它現在可以工作的原因)。我將不勝感激任何建議。如果您在我的配置中發現任何明顯的錯誤,如果您指出它們,我將不勝感激!
server { listen 80; server_name somedomain.com; location / { rewrite ^ https://somedomain.com$request_uri? permanent; } location /RPC2 { include scgi_params; scgi_pass 127.0.0.1:5000; auth_basic "app"; auth_basic_user_file /var/www/server/basic.auth; } } server { listen 443 default ssl; server_name somedomain.com; root /var/www/sites/app/current/public; passenger_enabled on; rails_env production; ssl_certificate /etc/ssl/certs/myssl.crt; ssl_certificate_key /etc/ssl/certs/myssl.key; ssl_protocols SSLv2 SSLv3 TLSv1; ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; location /downloads { autoindex on; autoindex_exact_size off; auth_basic "node"; auth_basic_user_file /var/www/server/basic.auth; alias /var/www/downloads/; } }
再次感謝!
我想你可以通過 proxy_passing 到 https 伺服器。
伺服器 { 聽 80; 位置/特殊{ proxy_pass https://localhost:443; proxy_set_header X-Real-IP $remote_addr; } }
如果它適合您,請檢查應用程序和 nginx 訪問日誌以獲取 / 特殊請求。如果記錄的 IP 是 127.0.0.1,啟用 nginx 的 http_realip 模組並添加
set_real_ip_from 127.0.0.1; real_ip_header X-Real-IP;
在 ssl 伺服器配置中。