У меня есть два сервера за обратным прокси-сервером nginx. Я правильно перенаправляюсь на сайты, но один из сайтов имеет логин до того, как он позволит вам войти на сайт (аналогично sharepoint), а обратный прокси-сервер, похоже, нарушает логин.
Я задал предыдущий вопрос, в котором очень похожая среда Вот
Меня перенаправляют на логин, но я не могу войти. Однако, если я удалю обратный прокси из уравнения, я могу войти в систему нормально.
Имя сервера с логином: server2.mydomain.com
server {
listen 80 default;
server_name _;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl default_server;
server_name server1.mydomain.com;
ssl_certificate /usr/local/nginx/conf/mydomain.com.crt;
ssl_certificate_key /usr/local/nginx/conf/mydomain.com.key;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 5m;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES";
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://192.168.0.15:80;
proxy_set_header Host $host;
proxy_redirect http:// $scheme://;
}
}
server {
listen 443 ssl;
server_name server2.mydomain.com;
ssl_certificate /usr/local/nginx/conf/mydomain.com.crt;
ssl_certificate_key /usr/local/nginx/conf/mydomain.com.key;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 5m;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES";
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://192.168.0.20:80;
proxy_set_header Host $host;
proxy_redirect http:// $scheme://;
}
}
Когда я иду в server1.mydomain.com это в основном статический веб-сайт, кажется, все работает. Но когда я иду в server2.mydomain.com Я получаю всплывающее окно входа в систему, но не могу успешно войти в службу.
Ожидаемое поведение будет заключаться в том, что я могу войти в систему и использовать этот сайт, как если бы обратного прокси-сервера там нет.
Вот журнал доступа с обратного прокси, когда я пытаюсь войти в server2.mydomain.com
192.168.0.5 - - [26/Jan/2016:02:23:52 -0600] "GET /test HTTP/1.1" 401 341 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko"
192.168.0.5 - - [26/Jan/2016:02:23:52 -0600] "GET /test HTTP/1.1" 401 1293 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko"
В /тест это раздел сайта, в котором находится логин, поэтому я пытался перейти на server2.mydomain.com/test.
Есть ли что-нибудь, что могло бы явно помешать мне войти в систему? Какие еще файлы журналов я могу проверить? заранее спасибо
Я пробовал несколько вещей, но ни один из них не работал.
Мой исходный файл конфигурации позволяет мне войти в систему, но всегда возвращает страницу с отказом в доступе.
этот файл конфигурации:
/ и т.д. / nginx / сайты-доступные / по умолчанию
server {
listen 443 ssl;
server_name server2.mydomain.com;
ssl_certificate /usr/local/nginx/conf/mydomain.com.crt;
ssl_certificate_key /usr/local/nginx/conf/mydomain.com.key;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 5m;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES";
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://192.168.0.20:80;
}
}
со строкой proxy_set_header и proxy_redirect просто переводит меня на страницу 403 запрещенного доступа, но перенаправляет.
Если я добавлю proxy_set_header
Вернитесь назад, я снова перехожу к логину, но вход по-прежнему не выполняется. Я также попытался изменить proxy_set_header на proxy_set_header X-Forwarded-Proto $scheme
, и это снова его полностью сломало. Любые идеи?
Ваше перенаправление прокси выглядит подозрительно. Посмотри на документация, а также на руководство для начинающих nginx.
По сути, попробуйте удалить из своего местоположения все, кроме proxy_pass. Это в основном предположение, но попробовать стоит.
У меня была аналогичная проблема некоторое время назад, я решил ее, исправив доступ к папке для группы, с которой был запущен процесс.
Для какого пользователя настроен NGINX? и есть ли у этого пользователя доступ к этим папкам SSL?