Nginx
使用 Nginx 和 Ruby On Rails(瘦伺服器)阻塞/重定向埠 3000
我現在正在設置一個使用 Ruby on Rails 和 Thin 伺服器的伺服器。
我已經設置 Nginx 將我的所有內容重定向
http://mysite.com
到https://mysite.com
(使用 ssl)。我希望頁面的所有網路流量都是 SSL,沒有例外。這很好用,但令我困擾的是,如果有人寫
http://mysite.com:3000
,仍然可以在沒有 SSL 的情況下訪問我的瘦伺服器,這恰好是我執行伺服器的埠。(我實際上在埠 3000、3001 上安裝了幾台伺服器……)。有沒有辦法阻止它,或者
https://mysite.com
像我對埠 80 所做的那樣重寫它?我嘗試複製我在埠 80 上所做的事情,但我收到錯誤消息說它已經在使用中。
這是我的 nginx 配置。
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; } }
關閉防火牆中的 3000 埠。
然後確保以僅綁定到本地主機的方式開始精簡。這絕對可以防止非來自本地機器本身的入站連接。
例如:
rails server -b ::1
或舊的 IPv4 方式:
rails server -b 127.0.0.1