Nginx как виртуальный хост и как обратный прокси

#ubuntu #nginx #reverse-proxy #virtualhost

#ubuntu #nginx #обратный прокси #virtualhost

Вопрос:

У меня есть GlassFish (сервер приложений Java), работающий на сервере Ubuntu. У меня также есть phppgadmin, работающий на другом порту, скажем, 5555 и настроенный с помощью apache.

Я использую Nginx как обратный прокси-сервер перед GlassFish. (Ssl и конфигурации для порта 443 еще не установлены.)

 server {
  listen          80;
  server_name     my_domain;

  location / {
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://my_ip_number:8080;
  }
  
  location /phppgadmin {
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  
        proxy_pass http://my_ip_number:5555/phppgadmin;
  }  
}
  

Когда я пытаюсь создать виртуальный хост для PostfixAdmin, как описано здесь, установив следующий файл в /etc/nginx/conf.d/ . В http://postfixadmin.my_domain/setup.php я вижу только страницу 404 от glassfish.
Установлена запись DNS A для поддомена.
Что не так с моей конфигурацией? Как это исправить?

Заранее спасибо

 server {
   listen 80;
   listen [::]:80;
   server_name postfixadmin.my_domain;

   root /usr/share/postfixadmin/public/;
   index index.php index.html;

   access_log /var/log/nginx/postfixadmin_access.log;
   error_log /var/log/nginx/postfixadmin_error.log;

   location / {
       try_files $uri $uri/ /index.php;
   }

   location ~ ^/(. .php)$ {
        try_files $uri =404;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include /etc/nginx/fastcgi_params;
   }
}
  

Ответ №1:

Я понял, что из-за того, как настроен мой сервер, невозможно достичь того, что я пытался сделать выше. Создание виртуального хоста для PostfixAdmin не требуется!

Вот моя окончательная конфигурация, и все работает нормально.

 server {
  listen          my_ip_number:80;
  server_name     example.com www.example.com;

  include snippets/letsencrypt.conf;
  return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name www.example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
    include snippets/ssl.conf;
    include snippets/letsencrypt.conf;

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


server {
    listen 443 ssl http2;

    server_name example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
    include snippets/ssl.conf;
    include snippets/letsencrypt.conf;

    access_log  /var/log/nginx/example.com.access.log; # upstreamlog;
    error_log   /var/log/nginx/example.com.error.log;
    rewrite_log on;

  location / {
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header HTTPS "on";

        proxy_pass http://my_ip_number:8080;
  }

  location /phppgadmin {
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_pass http://my_ip_number:5555/phppgadmin;
  }


  location /mypostfixadmin {
        proxy_pass http://my_ip_number:5555/postfixadmin;

        proxy_set_header Host $http_host;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Scheme $scheme;

        client_max_body_size 0;
  }

}