server {
listen 80;
server_name example.com;
location / {
rewrite ^/(.*)$ https://$host$1 permanent;
}
}
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/ssl/example.crt;
ssl_certificate_key /etc/ssl/example.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
location / {
proxy_pass https://www.google.com;
proxy_set_header Host www.google.com;
proxy_set_header Referer https://www.google.com;
proxy_set_header User-Agent $http_user_agent;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Accept-Encoding "";
proxy_set_header Accept-Language $http_accept_language;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
sub_filter google.com example.com;
sub_filter_once off;
}
}我正在尝试使用它,但是apache正在使用0.0.0.0:80,但问题是如何将请求从bi.example.com反向代理到google.com,同时仍然让webservice.example.com将请求重定向到承载apache的example.com。我不认为这是可以做到的,但我可能错了。
当我试图启动nginx时,我遇到了这个错误:
Dec 28 10:52:22 example.com nginx[27291]: nginx: [emerg] bind() to 0.0.0.0:443 failed (98: Address al...use)
Dec 28 10:52:23 example.com nginx[27291]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address alr...use)
Dec 28 10:52:23 example.com nginx[27291]: nginx: [emerg] bind() to 0.0.0.0:443 failed (98: Address al...use)
Dec 28 10:52:23 example.com nginx[27291]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address alr...use)
Dec 28 10:52:23 example.com nginx[27291]: nginx: [emerg] bind() to 0.0.0.0:443 failed (98: Address al...use)
Dec 28 10:52:24 example.com nginx[27291]: nginx: [emerg] still could not bind()我检查了端口,它是由httpd使用的,它对应于Apache。
为了进一步解释,我有两个CNAME重定向到example.com,我想重定向到一个与谷歌不同的页面,但这只是一个例子,所以因为两个CNAME都重定向到同一个url,所以我认为这是不可能的,并且从url重定向到另一个url来向另一个链接提供SSL证书是不可能的,如果Apache使用端口80是不可能的。除了为此使用全新的服务器之外,还有其他的可能性吗?现在,有一个CNAME从bi.example.com重定向到另一个url而不是Google,我试图通过将CNAME从bi.example.com指向example.com而不是其他url来设置一个重定向nginx。
发布于 2021-12-28 17:00:48
您不能让两个程序(Apache和nginx)监听同一个端口,但是您可以让一个程序(Apache或nginx)将两个独立的主机名反向代理到两个不同的服务,甚至可以在一个主机名上提供内容,而反向代理另一个服务。
因此,解决方案是首先决定两个程序中的一个,或者Apache或nginx,然后在该程序中为两个主机名设置两个虚拟主机,通过CNAME记录重定向到这两个主机名。然后,这两个虚拟主机中的一个可以将代理反向到Google,另一个可以向您的the服务提供(或反向代理)。
SSL证书的问题是另一个问题。您可以将反向代理配置为对两个虚拟主机使用单独的证书,也可以使用对两个虚拟主机都有效的证书。
https://serverfault.com/questions/1088386
复制相似问题