我想要:如果在(Hestia 192.168.0.37 服务器)中找不到任何站点,则重定向(Nginx 代理管理器 192.168.0.36)
鉴于:
- 赫斯提亚服务器 192.168.0.37
- Nginx 代理管理器 192.168.0.36
- 测试站点 testsite.com(在 Nginx 代理管理器中创建)(Hestia 没有任何记录)
- 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 中的默认服务器返回重定向。