Nginx регулярное выражение для исключения определенных путей - PullRequest
1 голос
/ 31 марта 2020

Я пытаюсь исключить некоторые пути в моем nginx проксипроходе и хочу, чтобы все остальное go перешло к моему проксипассу.

т.е. я не хочу давать proxy_pass любому URL, начинающемуся с «крошечного» или 'stati c', но я хочу, чтобы все остальные значения go указывали на мое местоположение прокси-сервера.

, и я использую следующее регулярное выражение для достижения этой цели:

~ ^((?!tiny|static).)*$

Но я всегда получаю Ошибка 404 Если я перейду к следующему URL-адресу в браузере

localhost:8080/xyz

, я хочу, чтобы оно было от go до

localhost:8000/api/tiny/records/xyz

Может кто-нибудь помочь мне указать, в чем проблема?

Вот мой полный nginx файл conf: -

server {
        listen       8080;
        server_name  localhost;
        location   ~ ^((?!tiny|static).)*$ {
            proxy_pass  http://localhost:8000/api/tiny/records/$1;
        }
        location   / {
            proxy_pass  http://localhost:8000;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

Большое спасибо.

1 Ответ

0 голосов
/ 31 марта 2020

Вам не хватает / и у вас * не в том месте. Регулярное выражение должно быть:

^(/(?!tiny|static).*)$

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

Например:

location / {
    proxy_pass  http://localhost:8000/api/tiny/records/;
}
location ~ ^/(tiny|static) {
    proxy_pass  http://localhost:8000;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...