Назад | Перейти на главную страницу

Как мне сказать Nginx пропустить перезапись определенного места?

Вот что я делаю:

Так как /api В системе проблема с HTTPS, я должен обслуживать ее по HTTP. Остальное заставляю быть в HTTPS. Однако в моей системе django перенаправления возвращают мне http. Возможно, это связано с django, но сейчас я хочу переписать весь HTTP на HTTP. Я бы обычно помещал это в 80 серверный блок, но я хочу оставить /api как HTTP.

Как я могу сделать это с помощью перезаписи?

Спасибо.

    server {
        listen 80;
        server_name localhost 127.0.0.1;
        server_name_in_redirect off;
        client_max_body_size 100M;

        location /api {
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

            proxy_pass http://localhost:5050;
            proxy_redirect default;
        }

    }
    server {

        listen 443;
        ssl on;

        location /app1 {
         ....
         proxy_pass http://localhost:1234;
        }

        location /app2 {
         ... 
         proxy_pass http://localhost:5678;
        }
}

Ах. Я только что пробовал что-то и вроде работает.

if ($request_uri !~ (/api)){
    rewrite     ^(.*)   https://$http_host$1 permanent;
}

а затем оставьте все остальное в 80 блок неповрежден ... Не собираюсь проверять свой ответ ...