Длинная директива Nginx proxy_pass

я хочу выполнить proxy_pass

с https://foo.bar/api/v1/users/ {userId} / store / {storeCode} / status по https://bar.foo/ api / v1 / users / {userId} / store / {storeCode} / status

, а также

из https://foo.bar/api/v1/users/ {userId} / opendate на https://bar.foo/api/v1/users/ {userId} / opendate

эти две ссылки - это метод http, который используется для доступа, позже мы ограничим доступ с помощью limit_except, но теперь я хочу сначала передать запрос proxy_pass.

Я выполнил такую ​​конфигурацию

location /api/v1/users/[0-9a-z]+/store {
    proxy_pass https://bar.foo/api/v1/users/[0-9a-z]+/store;
    proxy_set_header Host $proxy_host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For proxy_add_x_forwarded_for;
    proxy_redirect off;
    proxy_buffering off;
    proxy_ssl_protocols TLSv1.2;
    proxy_ssl_server_name on;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_pass_request_headers on;
}


location /api/v1/users/[0-9a-z]+/opendate {
    proxy_pass https://bar.foo/api/v1/users/[0-9a-z]+/opendate;
    proxy_set_header Host $proxy_host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For 
    proxy_add_x_forwarded_for;
    proxy_redirect off;
    proxy_buffering off;
    proxy_ssl_protocols TLSv1.2;
    proxy_ssl_server_name on;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_pass_request_headers on;
}

, но мой сервер все еще не проксирует запрос. Кто-нибудь знает, как указать расположение длинных директив proxy_pass с некоторым регулярным выражением в nginx?

2
задан 15 October 2019 в 19:16
1 ответ

Если это регулярное выражение, вы используете неправильный синтаксис для директивы location . См. этот документ для получения подробной информации.

Вам нужно только указать proxy_pass часть URI, если URI был изменен перед прохождением восходящего потока. Подробнее см. этот документ .

Например:

location ~ ^/api/v1/users/[0-9a-z]+/store {
    proxy_pass https://bar.foo;
    ...
}
0
ответ дан 3 December 2019 в 13:40

Теги

Похожие вопросы