Linux

如何驗證嘗試通過我的外部 IP 地址訪問我的網站的客戶端?

  • June 25, 2016

我製作了一個正在執行的 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。

從那裡,當外部人員試圖訪問您的站點時,它會提示他們輸入使用者名和密碼。

請注意,這是完全未加密的,並且沒有針對暴力攻擊的保護,但是對於您正在尋找的東西,它會很好地工作。

引用自:https://serverfault.com/questions/786043