Неверный результат перезаписи nginx в ngix.conf - PullRequest
0 голосов
/ 19 января 2019

Я пишу сегмент перезаписи в nginx для получения содержимого http://list.example.com:89/findcontent.action?id=6, когда я посещаю http://www.example.com/list/findcontent.action?id=6, и получаю содержимое http://www.example.com:81, пока я посещаю http://www.example.com. Ниже приведен список nginx.conf, и он прекрасно работает, когда я захожу на сайт www.example.com. Но когда я захожу на www.example.com/list/findcontent.action?id=6, я получаю ошибку 404 от http://list.example.com:89/list/findcontent.action?id=6. Это означает, что перезапись не работает. Может ли кто-нибудь помочь мне получить правильный конфиг? Спасибо.

server {
            listen  80; 
            listen  443 ssl; 
            server_name  www.example.com;
            keepalive_timeout   70;
            ssl_certificate     cert\www.example.com_public.crt;
            ssl_certificate_key  cert\www.example.com.key;
            ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
            ssl_ciphers         HIGH:!aNULL:!MD5;
            charset utf-8;
            access_log  logs/example_com.host.access.log;
            location  /list {
            rewrite ^/list '' break;
            proxy_pass   http://list.example.com:89/;
            }
            location  / {
            proxy_pass   http://www.example.com:81;
        }
    }

1 Ответ

0 голосов
/ 19 января 2019

Если вы пытаетесь переписать /list/findcontent.action?id=6 в /findcontent.action?id=6, ваш оператор rewrite будет неполным.Вам не хватает захвата.

Например:

rewrite ^/list(.*)$ $1 break;

Подробнее см. этот документ .


Вы можете добиться аналогичного результата.используйте только директивы location и proxy_pass.

Например:

location /list/ {
    proxy_pass   http://list.example.com:89/;
}

Обратите внимание на конечный / для значений location и proxy_pass.Подробнее см. в этом документе .

...