我正在设置一个服务器,使用瘦服务器上的Ruby on Rails。
我build立了Nginx将所有的http://mysite.comredirect到https://mysite.com (使用ssl)。 我希望网页上的所有networkingstream量都是SSL,没有例外。
这很好,但令我困扰的是,如果有人写http://mysite.com:3000 ,这正好是我运行我的服务器的端口,仍然可以访问我的瘦服务器没有SSL。 (我实际上在端口3000,3001上有几台服务器…)。
有没有办法阻止这个,或重写到https://mysite.com就像我做的端口80?
我试图重复我在端口80上做什么,但我得到错误,说它已经在使用。
这是我的nginxconfiguration。
upstream mysite.com { server 127.0.0.1:3000; server 127.0.0.1:3001; server 127.0.0.1:3002; } ##THIS WORKS: server { listen 80 default; server_name mysite.com *.mysite.com; ## redirect http to https ## return 301 https://mysite.com$request_uri; } ##THIS FAILS with "Address already in use" server { listen 3000; server_name mysite.com *.mysite.com; ## redirect http to https ## return 301 https://mysite.com$request_uri; } #This part works as expected server { listen 443 ssl; server_name mysite.com www.mysite.com; ssl on; ssl_certificate /home/sne/.ssl/server.crt; ssl_certificate_key /home/sne/.ssl/server.key; access_log /var/www/mysite.com/log/access.log; error_log /var/www/mysite.com/log/error.log; root /var/www/mysite.com; index index.html; if ($host = 'www.mysite.com' ) { return 301 https://mysite.com$request_uri; } location / { 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_FORWARDED_PROTO $scheme; proxy_redirect off; try_files /system/maintenance.html $uri $uri/index.html $uri.html @ruby; } location @ruby { proxy_pass http://mysite.com; } }
closures防火墙中的端口3000。
然后确保你以一种只绑定到本地主机的方式启动瘦客户端。 这绝对防止入站连接不是源自本地机器本身。
例如:
rails server -b ::1
还是旧的IPv4方式:
rails server -b 127.0.0.1