2013-06-10 3 views
0

Ситуация у меня в том, что у меня есть dev-бокс, полный различных приложений, таких как сервер minecraft, сервер couchdb и базовый блог Wordpress за nginx, который обрабатывает пересылку.Настройка HTTP-аутентификации в dev-блоке

Теперь у всех есть свой способ обработки логинов, но то, что я хотел бы настроить, - это нечто вроде аутентификационного прокси.

В некотором смысле перехватите все HTTP-запросы, поступающие на сервер, и проверьте, не прошли ли они аутентификацию, если они не возвращают страницу входа в систему, если они разрешают запрос до wordpress или couchdb. Я мог бы иметь список пользователей на сервере, чтобы мои друзья могли войти с 1 журналом.

Я пробовал поиск по ключевым словам, но не понял, как это можно сделать, например, с NGINX? Я немного новичок, когда дело доходит до работы в сети, пожалуйста, помогите!

ответ

0

Вот грубый пример, чтобы сделать HTTP авторизацию в Nginx, а затем прокси-соединение с первоисточником:

location /couchdb { 
    auth_basic "Restricted"; 
    auth_basic_user_file htpasswd; 
    rewrite /couchdb/(.*) /$1 break; # Optional, depends on what you're proxying to 
    proxy_pass http://localhost:5984; 
    proxy_redirect off; 
    proxy_set_header Host $host; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
} 

Выше от couchdb docs, но общая идея применима к любой HTTP на основе приложения вы хотите защитить. Вам нужно будет повторить этот блок конфигурации для каждого отдельного приложения.

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

Также обратите внимание, что если вы хотите иметь единственную страницу, на которой пользователи входят в систему, а затем использовать этот логин для всех ваших приложений, это намного сложнее. Это обычно называют Single Sign On и требует определенной конфигурации для каждого приложения, которое вы собираетесь интегрировать.

+0

Спасибо за это! Трудно делать это, не зная слишком многого. Я должен попытаться сформулировать мой вопрос лучше, мне действительно не нужно иметь знак sigle, чтобы пользователи подписались в других приложениях, только что доступ к ним находится за одной страницей входа. Например, если у меня есть статический тип HTML-файла веб-страницы, обслуживаемой с couchdb, но я хочу ограничить доступ только тем людям, которые имеют доступ к моему серверу через NGINX. – TeraTon

+0

Да, это то, что я решил, что вы действительно хотели, отсюда и HTTP-решение. Попробуйте, и если вы счастливы, дайте +1 и примите ответ. –

+0

Что-то, что могло бы работать и быть намного приятнее, чем уродливое HTTP-аутентификация, может быть простой страницей django (которая также живет на сервере, не спрашивайте.), Которая обеспечивает oauth login. Затем настройте nginx для перехода на эту страницу, если это не разрешено. Затем вы входите в систему с надлежащим oauth и получаете доступ к остальной части сервера. – TeraTon

Смежные вопросы