Назад | Перейти на главную страницу

Как аутентифицировать клиентов, пытающихся получить доступ к моему сайту через мой внешний IP-адрес?

Я сделал приложение 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.

Оттуда, когда кто-то извне пытается получить доступ к вашему сайту, он запрашивает у них имя пользователя и пароль.

Обратите внимание, что он полностью незашифрован и не имеет защиты от атак грубой силы, но для того, что вы ищете, он будет работать хорошо.