Linux
如何驗證嘗試通過我的外部 IP 地址訪問我的網站的客戶端?
我製作了一個正在執行的 ruby on rails 應用程序
0.0.0.0:3000
我還在我的路由器上轉發了埠 3000,以便可以通過網際網路遠端訪問它。因此,我可以通過以下方式查看 webapp:
1.
localhost:3000
在執行伺服器的機器上2.
192.168.0.100:3000
在同一 LAN 上的任何機器上3.
<my-external-ip>:3000
在任何連接到網際網路的機器上現在,我如何添加一個登錄驗證系統,這樣每當有人
<my-external-ip>:3000
在他們的瀏覽器上輸入時,他們必須輸入使用者名和密碼才能訪問 webapp。我知道我可以在我的 Ruby on Rails 應用程序中添加一個身份驗證系統,但我希望有一個解決方案可以在 Rails 層之前完成它。我對此完全陌生。
在應用機器上添加一個 nginx 反向代理,預設站點配置如下:
server { listen 3001; server_name _; auth_basic "Restricted Access"; auth_basic_user_file /etc/nginx/htpasswd.users; location / { proxy_pass http://localhost:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; }}
從那裡,生成一個包含使用者名和密碼的相關 htpasswd 文件(請參閱http://www.htaccesstools.com/htpasswd-generator/或
apache-utils
)並將其放置在/etc/nginx/htpasswd.users
.在您的路由器上,將外部埠 3000 映射到埠 3001 的內部 IP。
從那裡,當外部人員試圖訪問您的站點時,它會提示他們輸入使用者名和密碼。
請注意,這是完全未加密的,並且沒有針對暴力攻擊的保護,但是對於您正在尋找的東西,它會很好地工作。