[英]How to set up redirect from http to https with nginx?
我整天都在與這個問題作斗爭。 這是我的nginx.cong
:
upstream my_website.co {
server 127.0.0.1:8080;
}
server{
listen 80;
listen 443 default ssl;
# return 301 https://www.my_website.co; - I put it here, but it didn't work
ssl on;
ssl_certificate /etc/nginx/certs/my_website.co.crt;
ssl_certificate_key /etc/nginx/certs/my_website.co.private.key;
server_name my_website.co _;
root /home/deployer/my_website/public;
location / {
proxy_set_header X_FORWARDED_PROTO $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header CLIENT_IP $remote_addr;
if (!-f $request_filename) {
proxy_pass http://my_website.co;
break;
}
if (-f $document_root/system/maintenance.html) {
return 503;
}
}
# return 301 https://www.my_website.co; - I put it here, but it didn't work
請您幫我一下,如何將所有內容從http
重定向到https
?
我的Rails代碼:
before_filter :ensure_domain
APP_DOMAIN = 'www.my_website.co'
def ensure_domain
if request.env['HTTP_HOST'] != APP_DOMAIN && Rails.env != 'development'
redirect_to "https://#{APP_DOMAIN}#{request.env['REQUEST_PATH']}", :status => 301
end
end
我會為您的每一次幫助而感激,我迷失在這里。
謝謝
我在我的一個站點的nginx配置文件中做了類似的事情,它的工作沒有問題。 我的ApplicationController中沒有任何東西來強制重定向。
server {
listen 80;
server_name my_website.co;
rewrite ^ https://server_name$request_uri? permanent;
}
server {
listen 80;
server_name www.my_website.co;
rewrite ^ https://server_name$request_uri? permanent;
}
server {
listen 443;
server_name my_website.co;
root /home/deployer/my_website/public;
ssl on;
ssl_certificate /etc/nginx/certs/my_website.co.crt;
ssl_certificate_key /etc/nginx/certs/my_website.co.private.key;
// rest of your config file below
}
您擁有的服務器部分應僅偵聽端口443,因此在Nginx配置中將端口80從端口中刪除。 然后將這樣的新服務器部分添加到您的Nginx配置文件中:
server { listen 80; server_name my_site.co; rewrite ^ https://$server_name$request_uri? permanent; }
然后Nginx將為您重定向所有內容到SSL版本。 您可以在ApplicationController中刪除代碼。
在Rails 4中,我們可以直接在application.rb中執行此操作
config.force_ssl = true
無需使用nginx配置文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.