我在互联网上有一个可以以“https://site.example1.com”访问的网站。
我还有另一个可在互联网上访问的网站“https://www.example2.com”。
我对这两个站点拥有完全控制权,并且它们都拥有有效的证书。
现在我想让第一个站点作为第二个站点上的位置可访问;这意味着“https://www.example2.com/site”应该显示“https://site.example1.com”的内容。
我尝试了一个简单的:
server {
listen 443 ssl;
resolver 127.0.0.1 8.8.8.8;
server_name updates.okcash.com;
ssl_certificate /etc/letsencrypt/live/www.example2.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.example2.com/privkey.pem;
ssl_verify_client optional_no_ca;
location /site {
proxy_pass "https://site.example1.com";
rewrite /site/(.*) /$1 break;
proxy_redirect off;
proxy_set_header Host $host;
}
location / {
proxy_pass "http://localhost:5001";
proxy_connect_timeout 60;
proxy_read_timeout 86400; # 24h
proxy_send_timeout 60;
proxy_intercept_errors off;
proxy_http_version 1.1;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
但这不能很好地工作,因为浏览器(访问“https://www.example2.com/site”)提供的来自后端(“https://site.example1.com”)的服务器证书对于请求无效。
如何强制 nginx 前端发送自己的证书并自行验证后端身份?