Nginx обратный прокси для порта 3001 - PullRequest
0 голосов
/ 29 апреля 2020

У меня есть express сервер, работающий на порте 3001, который обслуживает приложение React.

Допустим, мое доменное имя - example.com; Я пытаюсь добиться:

  1. Возможность звонить https://example.net/api/getUsers

  2. Перенаправление с http://1.2.3.4: 3001 / с портом на https://example.net/

  3. В основном перенаправление всех HTTP-вызовов (будь то IP или домен) на https://example.net/

Может ли кто-нибудь помочь с настройкой этой конфигурации Nginx? Это то, что у меня есть в каталоге / etc / nginx / sites-available:

server {
        server_name 1.2.3.4:3001;
        return 301 https://example.net;
}

server {
        listen 80 default_server;
        listen [::]:80 default_server;
        listen 443 default_server ssl;
        listen [::]:443 default_server ssl;
        server_name example.net www.example.net;

        return 301 https://example.net$request_uri;
}

server {
  listen 80;

  server_name example.net www.example.net;

  location / {
    proxy_pass http://localhost:3001;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
  }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/example.net/fullchain.pem; # managed by Certbot
   ssl_certificate_key /etc/letsencrypt/live/example.net/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}

1 Ответ

0 голосов
/ 29 апреля 2020

Похоже, что ваше приложение возвращает редирект с адресом: http://1.2.3.4: 3001 / Вы можете переписать его с помощью proxy_redirect и уменьшить лишние вещи.

server {
        listen 80 default_server;
        return 301 https://example.net$request_uri;
}

server {  
  listen 443 ssl; # managed by Certbot
  ssl_certificate /etc/letsencrypt/live/example.net/fullchain.pem; # managed by Certbot
  ssl_certificate_key /etc/letsencrypt/live/example.net/privkey.pem; # managed by Certbot
  include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
  ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
  server_name example.net www.example.net;

  location / {
    proxy_pass http://localhost:3001;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
    proxy_redirect http://1.2.3.4:3001/ $scheme://$host/;
  }
}

Да, вы можете добавить следующее перенаправление:

server {
        listen 1.2.3.4:3001;
        return 301 https://example.net;
}

Но обратите внимание на ваше приложение реакции. локально прослушивает localhost: 3001

proxy_pass http://localhost:3001;

, поэтому убедитесь, что приложение реагирует. также не слушает сокет 1.2.3.4:3001. В противном случае вы получите ошибку Address already in use, а nginx не запустится.

...