我在这个网站和类似的网站上找到了几个部分答案,但我不知道如何把它们放在一起,或者答案就在那里,我无法识别它:-/
我想要达到的目标:
我有一个在 LAN 中运行的 http 服务(我已经适当地设置了 dnsmasq):
http://subdomain1.domain.com:1234/
我想将其公开为互联网(外部 DNS 也可以正常工作):
https://subdomain2.domain.com:443/
由 nginx 处理用户身份验证。
我还想(必须?)保持浏览器中可见的 URL 不变。
我已经尝试了几种从类似问题中发现的组合,但我似乎无法理解。
这是我最后一次尝试:
ssl_certificate /var/www/domain.com/domain_com.crt;
ssl_certificate_key /var/www/domain.com/domain_com.key;
server {
listen 443 default_server;
server_name subdomain1.domain.com;
location / {
auth_basic "Restricted";
auth_basic_user_file /var/www/domain.com/domain.com.passwords;
proxy_pass http://subdomain1.domain.com:1234/;
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_redirect https://subdomain2.domain.com/ http://subdomain1.domain.me:1234/;
}
}
我得到的是:“错误 107(net::ERR_SSL_PROTOCOL_ERROR):SSL 协议错误。”
更新:
我想我找到了解决方案,但仍将不胜感激。这一个还重写了http访问以通过https。
ssl_certificate /var/www/domain.com/domain_com.crt;
ssl_certificate_key /var/www/domain.com/domain_com.key;
server {
listen 80;
server_name subdomain1.domain.com;
rewrite ^ https://$server_name$request_uri? permanent;
}
server {
listen 443;
ssl on;
server_name subdomain1.domain.com;
location / {
auth_basic "Restricted";
auth_basic_user_file /var/www/domain.com/domain.com.passwords;
proxy_pass http://subdomain2.domain.com:1234/;
proxy_set_header Host $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;
add_header Front-End-Https on;
proxy_redirect off;
}
}