我有一个VPS,在Ubuntu,NginX和Unicorn上运行Rails 4应用程序。
由于我希望所有网页都经过SSL加密,因此对http://
的所有请求都会转发到https://
,但工作正常。
这是我的NginX配置的摘录:
http {
....
server {
listen 80;
server_name example.com;
rewrite ^ https://$server_name$request_uri? permanent;
}
server {
listen 443;
server_name example.com;
root /home/rails/public;
index index.htm index.html;
ssl on;
ssl_certificate /etc/ssl/example.com.crt;
ssl_certificate_key /etc/ssl/example.com.key;
location / {
try_files $uri/index.html $uri.html $uri @app;
}
location @app {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $host;
proxy_pass http://app_server;
}
}
}
如何确保将http://example.com
和https://example.com
的所有请求转发到https://www.example.com
?
感谢您的帮助。
答案 0 :(得分:1)
我们在apache2
:
<VirtualHost *80>
ServerName frontlineutilities.co.uk
ServerAlias www.frontlineutilities.co.uk
</VirtualHost>
研究过how you'd achieve this in Nginx后,我发现了这个:
server {
listen 80;
server_name example.org www.example.org;
...
}
-
捕获请求
我写这个作为答案的原因是因为您的选择是使用中间件还是Web服务器本身
虽然我不知道具体细节,但我做知道添加到Rails中间件最终会导致膨胀。我是modular programming的坚定支持者 - 并且很乐意将功能分成堆栈的不同部分
您遇到的问题实际上不是rails
- 这是服务器问题(如何将所有请求路由到www.
)。因此,我强烈建议您专注于服务器以对其进行排序。最后,服务器将捕获请求到您的服务器IP&amp;相应地路由它们
我会从上面的资源开始。努力在服务器中重定向。无论您是向www.
还是标准domain
答案 1 :(得分:1)
如果您要设置哪个重定向http://example.com或https://example.com到http://www.example.com和https://www.example.com
以下内容应该进行重定向
server {
listen 80;
server_name example.com;
rewrite ^/(.*) https://www.example.com$request_uri permanent;
}
server {
listen 443;
server_name example.com;
rewrite ^/(.*) https://www.example.com$request_uri permanent;
}
您还将原始server_name更改为www.example.com 希望这会有所帮助。