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

Nginx proxy_pass показывает порт без косой черты

У меня есть приложение с конечной точкой http: // localhost: 3000 / seller /, и я использую nginx proxy_pass

server {
    include default_proxy_headers;
    listen 80;
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name domain.my;
    location /seller {
        proxy_buffering off;
        proxy_pass http://localhost:3000;
    }
    location /seller/api {
        rewrite    /seller/(.*) /$1 break;
        proxy_pass http://localhost:5000;
        proxy_buffering off;
    }
}

Это работает, как я ожидал, с https://domain.my/seller/ - все нормально.

Если я пытаюсь использовать https://domain.my/seller (без косой черты "/" в конце) перенаправляет на https://domain.my:3000/seller/.

Как отключить перенаправление на порт ": 3000"? Я хочу, чтобы он работал только как https://domain.my/seller/ (с / в конце).

Хорошо. Если я вас правильно понял, посмотрите. Что, если бы вы использовали upstream? Номера портов перемещены внутри каждого upstream позволяя вам proxy_pass их по псевдониму.

  upstream backend1 {

    # PHP-CGI GATEWAY 1 - listening on IPv4 & Port...
    server                  127.0.0.1:3000 weight=3 max_fails=1 fail_timeout=1s;

  } # END upstream backend1

  upstream backend2 {

    # PHP-CGI GATEWAY 2 - listening on IPv4 & Port...
    server                  127.0.0.1:5000 weight=3 max_fails=1 fail_timeout=1s;

  } # END upstream backend2

  server {
    listen                  80 default_server;
    listen                  [::]:80 default_server;
  
    server_name             *.example1.com;
    root                    /var/www/example1.com/public;
    index                   index.html;


    location /seller {

      proxy_pass                         http://backend1;
      proxy_http_version                 1.1;
      proxy_cache_bypass                 $http_upgrade;

      # Proxy headers
      proxy_set_header Upgrade           $http_upgrade;
      proxy_set_header Connection        "upgrade";
      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_set_header X-Forwarded-Proto $scheme;
      proxy_set_header X-Forwarded-Host  $host;
      proxy_set_header X-Forwarded-Port  $server_port;

      # Proxy timeouts
      proxy_connect_timeout              60s;
      proxy_send_timeout                 60s;
      proxy_read_timeout                 60s;

    }

    location /seller/api {

      proxy_pass                         http://backend2;
      proxy_http_version                 1.1;
      proxy_cache_bypass                 $http_upgrade;

      # Proxy headers
      proxy_set_header Upgrade           $http_upgrade;
      proxy_set_header Connection        "upgrade";
      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_set_header X-Forwarded-Proto $scheme;
      proxy_set_header X-Forwarded-Host  $host;
      proxy_set_header X-Forwarded-Port  $server_port;

      # Proxy timeouts
      proxy_connect_timeout              60s;
      proxy_send_timeout                 60s;
      proxy_read_timeout                 60s;

    }

  }