如何将 Hestia 中未找到的任何站点重定向到另一台服务器 - Nginx 代理管理器

如何将 Hestia 中未找到的任何站点重定向到另一台服务器 - Nginx 代理管理器

我想要:如果在(Hestia 192.168.0.37 服务器)中找不到任何站点,则重定向(Nginx 代理管理器 192.168.0.36)

鉴于:

  1. 赫斯提亚服务器 192.168.0.37
  2. Nginx 代理管理器 192.168.0.36
  3. 测试站点 testsite.com(在 Nginx 代理管理器中创建)(Hestia 没有任何记录)
  4. hestia 回复:
#netstat -nt4ulp | grep nginx
tcp        0      0 0.0.0.0:80 LISTEN /nginx: mast 
tcp        0      0 0.0.0.0:443 LISTEN /nginx: mast 
tcp        0      0 0.0.0.0:8083 LISTEN/nginx: master  
tcp        0      0 127.0.0.1:8084 LISTEN /nginx: mast 
#netstat -nt4ulp | grep apache
tcp        0      0 192.168.0.37:8443 LISTEN /apache2     
tcp        0      0 192.168.0.37:8080 LISTEN /apache2     
tcp        0      0 127.0.0.1:8081 LISTEN /apache2  

========================================================================

我尝试:

编辑 /etc/nginx/conf.d/192.168.0.37.conf

server {
    listen 80 default_server;
    server_name _;
    
    location / {
        proxy_pass http://192.168.0.36:80;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

server {
    listen 443 ssl default_server;
    server_name _;
    
        ssl_certificate     /usr/local/hestia/ssl/certificate.crt;
        ssl_certificate_key /usr/local/hestia/ssl/certificate.key;

    
    location / {
        proxy_pass https://192.168.0.36:443;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

========================================================================

我尝试

HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Fri, 15 Sep 2023 17:54:48 GMT
Content-Type: text/html
Content-Length: 162
Connection: keep-alive
Location: https://testsite.com/

并从 /etc/apache2/conf.d/192.168.0.37.conf 查看来自 (Hestia 服务器 192.168.0.37) DocumentRoot /var/www/html/index.html 的页面

Listen 192.168.0.37:8443
Listen 192.168.0.37:8080
<VirtualHost 192.168.0.37:8080>
    ServerName 192.168.0.37
    DocumentRoot /var/www/html2/
    Alias /error/ /var/www/document_errors/

</VirtualHost>

<VirtualHost 192.168.0.37:8443>
    ServerName 192.168.0.37
    DocumentRoot /var/www/html/
    Alias /error/ /var/www/document_errors/

    SSLEngine on
    SSLVerifyClient none
    SSLCertificateFile         /usr/local/hestia/ssl/certificate.crt
    SSLCertificateKeyFile      /usr/local/hestia/ssl/certificate.key

</VirtualHost>

为什么?怎么解决?

答案1

这应该是一条评论,但是有点长。

我不知道你在这里问什么。

如果您要在 nginx 服务器上终止 SSL,那么您要么拥有绝对庞大的 SSL 证书,要么在 nginx 中将每个站点配置为单独的服务器{...}。

并查看来自(Hestia 服务器 192.168.0.37)的页面

是的,这正是我所期望的配置。您请求的是 http[s]://192.168.0.36,您得到的是 http[s]://192.168.0.36

如果你想保留https://192.168.0.36(在子网外无法访问)同时为未知虚拟主机添加新的行为,那么您需要在代理上具有新名称的 DNS 记录或主机条目,以及 apache 中相应的虚拟主机。

或者,由于任何理智的人都不会尝试使用同一个证书操作多个站点,因此只需从 nginx 中的默认服务器返回重定向。

相关内容