Обратный прокси-сервер nginx перенаправляет на внутренний IP-адрес

У меня есть nginx в качестве обратного прокси-сервера и веб-приложение apache для сервера nextcloudpi.

у меня есть следующая конфигурация nginx

server {

server_name drive.example.com;

location / {
proxy_pass http://192.168.0.7/;
proxy_set_header X-Real-IP  $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
}

    listen [::]:443 ssl; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/drive.example.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/drive.example.com/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 {
    if ($host = drive.example.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


listen 80;
listen [::]:80;

server_name drive.example.com;
    return 404; # managed by Certbot


}

и следующее как конфигурация apache

<IfModule mod_ssl.c>
  <VirtualHost _default_:443>
    DocumentRoot /var/www/nextcloud
ServerName drive.example.com
    CustomLog /var/log/apache2/nc-access.log combined
    ErrorLog  /var/log/apache2/nc-error.log
    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/drive.example.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/drive.example.com/privkey.pem
  </VirtualHost>
  <Directory /var/www/nextcloud/>
    Options +FollowSymlinks
    AllowOverride All
    <IfModule mod_dav.c>
      Dav off
    </IfModule>
    LimitRequestBody 0
    SSLRenegBufferSize 10486000
  </Directory>
</IfModule>

Примечание. Раньше у меня был apache в качестве прямого внешнего интерфейса к Интернету, и теперь я хочу использовать nginx в качестве внешнего интерфейса, а apache — в качестве сервера веб-приложений.

Любая помощь приветствуется, если я могу связаться с drive.example.com без перенаправления на внутренний IP-адрес?

Спасибо.


person arp    schedule 08.01.2021    source источник


Ответы (1)


Похоже, вам нужно отключить заголовки перенаправления прокси-сервера, попробуйте изменить и обновить файл конфигурации для nginx (обратный прокси-сервер), это обеспечит работу вашего nginx в качестве посредника< /strong> между сервером apache и клиентом (вместо того, чтобы nginx просто перенаправлял клиента на сервер apache с перенаправлением и не выступал в качестве посредника):

server {
listen 80;
listen [::]:80; # if you're not using ipv6 do remove this line.    
server_name drive.example.com;

location / {
    proxy_redirect              off;
    proxy_read_timeout          1m;
    proxy_connect_timeout       1m;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;    
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_redirect off;
    proxy_pass http://192.168.0.7/;    
}

    listen [::]:443 ssl; # if you're not using ipb6 do remove this line
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/drive.example.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/drive.example.com/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 {
    if ($host = drive.example.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot




server_name drive.example.com;
    return 404; # managed by Certbot   
}
person Ridwan    schedule 08.01.2021