2016-07-28 2 views
0

У меня есть 2 сервера, один имеет SSL и я сконфигурировать его так,Nginx перенаправлять дважды из протокола HTTPS на HTTP

на сервере с сертификацией SSL (который является https: // www.example.com):

location ~^/abc/.* { 
    proxy_pass http://www.example.com:8214/ 
} 

на другом сервере (который является HTTP: // www.anotherExample.com):

server { 
    listen 8214; 
    server_name www.anotherExample.com; 
    rewrite ^/(.*)$ http://www.anotherExample.com:8080/$1 permanent; 
} 

и после HTTPS доступа: // www.example.com/abc/api/getGroup

он не может перенаправлять на http: // www.anotherExample.com:8080/api/getGroup

Что-то не так ???

ответ

1

Есть несколько вещей, которые вы можете сделать, чтобы улучшить свою конфигурацию.

location ^~ /abc/ { 
    proxy_pass http://www.example.com:8214$uri; 
    #You should have other directives set here as well. 
} 

Кроме того, рассмотреть вопрос о создании upstream. Затем для блока сервера:

server{ 
    listen 8124; 
    server_name www.anotherExample.com; 
    rewrite ^/abc/(.*)$ http://www.anotherExample.com:8080/$1 permanent; 
} 

server{ 
    listen 8080; 
    server_name www.anotherExample.com; 

    location ^~ /api/ { 
     #your_config_here 
    } 
} 

Объяснение:

В своем первом location блоке, вы не должны .* в выражении. Nginx будет соответствовать вам. Затем, когда вы проксируете, вы можете явно указать Nginx на отправку URI.

Далее вы отправляете URI www.anotherExample.com:8124, который включает в себя /abc/, поэтому вы хотите извлечь все после этого.

Наконец, поскольку вы переписали его, указав на порт 8080, вам необходимо определить отдельный серверный блок для этого.

Я не знаю, к чему вы стремитесь достичь, но в большинстве случаев не требуется много проксирования и перенаправления и может привести к плохой работе. Еще одно соображение, которое вы должны учитывать, - это отправка незашифрованной информации на другойExample.com, который, если не в той же локальной сети, может быть уязвимостью безопасности.

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