Я сделал приложение Ruby on Rails, которое работает на 0.0.0.0:3000
Я также перенаправил порт 3000 на моем маршрутизаторе, чтобы он был доступен удаленно через Интернет.
Итак, я могу просматривать веб-приложение следующими способами:
1. localhost:3000
на машине, на которой работает сервер
2. 192.168.0.100:3000
на любой машине в той же локальной сети
3. <my-external-ip>:3000
на любой машине, подключенной к Интернету
Теперь, как я могу добавить систему аутентификации входа, чтобы всякий раз, когда кто-то входит <my-external-ip>:3000
в своем браузере они должны ввести имя пользователя и пароль, прежде чем они смогут получить доступ к веб-приложению. Я знаю, что могу добавить систему аутентификации в свое приложение 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 должен быть сопоставлен внутреннему IP-адресу порта 3001.
Оттуда, когда кто-то извне пытается получить доступ к вашему сайту, он запрашивает у них имя пользователя и пароль.
Обратите внимание, что он полностью незашифрован и не имеет защиты от атак грубой силы, но для того, что вы ищете, он будет работать хорошо.