如何验证尝试通过我的外部 IP 地址访问我的网站的客户端?

如何验证尝试通过我的外部 IP 地址访问我的网站的客户端?

我制作了一个 ruby​​ on rails 应用程序,它正在运行,0.0.0.0:3000 我还转发了路由器上的 3000 端口,以便可以通过互联网远程访问。
因此,我可以通过以下方式查看 Web 应用程序:
1.localhost:3000在运行服务器的机器上
2.192.168.0.100:3000在同一 LAN 上的任何机器上
3.<my-external-ip>:3000在任何连接到互联网的机器上

现在,我该如何添加登录身份验证系统,以便每当有人进入<my-external-ip>:3000浏览器时,他们都必须输入用户名和密码才能访问 Web 应用程序。我知道我可以在我的 Ruby on Rails 应用程序中添加身份验证系统,但我希望有一个解决方案可以在 Rails 层“之前”完成此操作。

我对此完全陌生。

答案1

在应用程序机器上添加 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。

从那里,当外部有人尝试访问您的网站时,它会提示他们输入用户名和密码。

请注意,这是完全未加密的,并且无法抵御暴力攻击,但对于您正在寻找的内容,它会很好用。

相关内容