我已经做了一个Ruby应用程序运行在0.0.0.0:3000
轨道上我也转发了我的路由器上的端口3000,以便它可以通过互联网远程访问。
所以,我可以通过以下方式查看Web应用程序:
1.运行服务器的机器上的localhost:3000
2.在同一LAN上的任何机器上192.168.0.100:3000
3.连接到互联网的任何机器上的<my-external-ip>:3000
现在,我该如何添加一个loginauthentication系统,以便当有人在浏览器中input<my-external-ip>:3000
时,必须input用户名和密码才能访问webapp。 我知道我可以在我的Ruby on Rails应用程序中添加一个身份validation系统,但是我希望能在Rails图层之前完成一个解决scheme。
我对此完全陌生。
在应用程序计算机上添加一个nginx反向代理,其默认站点的configuration如下:
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。
从那里,当外面的人试图访问你的网站,它会提示他们input用户名和密码。
请注意,这是完全没有encryption的,并没有防范暴力攻击,但是对于你正在寻找的,它会工作的很好。