我整天都在和这个问题作斗争。
这是我的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
我会感激所有的帮助,我迷失在这里。
谢谢
答案 0 :(得分:1)
我在我的一个网站上的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
}
答案 1 :(得分:0)
您拥有的服务器部分应该只侦听端口443,因此请在Nginx配置中从端口80中删除端口80。然后将这样的新服务器部分添加到您的Nginx配置文件中:
server { listen 80; server_name my_site.co; rewrite ^ https://$server_name$request_uri? permanent; }
然后Nginx会将所有内容重定向到SSL版本。您可以删除ApplicationController中的代码。
答案 2 :(得分:0)
在Rails 4中我们可以直接在application.rb
中执行此操作config.force_ssl = true
无需使用nginx配置文件。