NGINX-Hosting mehrerer Server in derselben Domäne

NGINX-Hosting mehrerer Server in derselben Domäne

Ich habe eine Website, die von Nginx bereitgestellt wird, und ich versuche etwas zu tun, von dem ich nicht weiß, ob es auf die von mir versuchte Weise möglich ist, aber der Fall ist:

Ich habe Anwendung A und B mit React/Node erstellt.

  • Die Anwendung A ist die Hauptanwendung, ihr Frontend und Backend sind Dockerized.
  • Die Anwendung B ist das Admin-Panel, das über ein separates Frontend und Backend verfügt und ebenfalls dockerisiert ist.
  • Ich bediene mich derzeit der Bewerbung A amwww.applicationA.com/und ich versuche, die Anwendung B bereitzustellen aufwww.applicationA.com/admin.

Unten ist meine NGINX-Konfiguration:

    server {
            listen       80 default_server;
            listen       [::]:80 default_server;
            index index.html index.htm index.nginx-debian.html;
            server_name  applicationA.com www.applicationA.com;
            root /var/www/html/;
    
            location / {
                   // *This is working*
                   rewrite ^ https://$host$request_uri? permanent;
                   proxy_pass http://applicationA.com:8080;
            }
    
            location /admin {
                // *This is **NOT** working*
                proxy_pass http://applicationA.com:5001;
            }
    }
    
    server {
            listen 443 ssl http2;
            listen [::]:443 ssl http2;
            server_name applicationA.com www.applicationA.com;
            server_tokens off;
            ssl_certificate /etc/letsencrypt/live/applicationA.com/fullchain.pem;
            ssl_certificate_key /etc/letsencrypt/live/applicationA.com/privkey.pem;
            ssl_buffer_size 8k;
            ssl_dhparam /etc/ssl/certs/dhparam-2048.pem;
            ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
            ssl_prefer_server_ciphers on;
            ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:!ADH:!AECDH:!MD5;
            ssl_ecdh_curve secp384r1;
            ssl_session_tickets off;
            ssl_stapling on;
            ssl_stapling_verify on;
            resolver 8.8.8.8;
            location / {
                    try_files $uri @server;
            }
    
            location @server { // **Working**
                    proxy_pass http://applicationA.com:8080;
                    add_header X-Frame-Options "SAMEORIGIN" always;
                    add_header X-XSS-Protection "1; mode=block" always;
                    add_header X-Content-Type-Options "nosniff" always;
                    add_header Referrer-Policy "no-referrer-when-downgrade" always;
                    add_header Content-Security-Policy "default-src * data: 'unsafe-eval' 'unsafe-inline'" always;
            }
    
            location /admin { // **NOT Working**
                    proxy_pass http://applicationA.com:5001;
                    add_header X-Frame-Options "SAMEORIGIN" always;
                    add_header X-XSS-Protection "1; mode=block" always;
                    add_header X-Content-Type-Options "nosniff" always;
                    add_header Referrer-Policy "no-referrer-when-downgrade" always;
                    add_header Content-Security-Policy "default-src * data: 'unsafe-eval' 
                    'unsafe-inline'" always;
            }
    
            root /var/www/html/;
            index index.html index.htm index.nginx-debian.html;
 }
  • Die Antwort, die ich beim Zugriff auf applicationA.com/admin erhalte, ist 502: Bad Gateway.
  • In den Protokollen ist nichts Relevantes enthalten, das auf Fehler schließen lässt.
  • Bei Bedarf werde ich die Node-Datei oder die Docker-Compose-Datei posten.

Antwort1

nginx gibt den Fehler 502 Bad Gateway zurück, wenn das angegebene Ziel proxy_passnicht erreicht werden kann. Stellen Sie in diesem Fall sicher, dass der Port 5001 von dort aus erreichbar ist, wo nginx ausgeführt wird.

verwandte Informationen