我在这个网站和类似的网站上找到了几个部分答案,但我无法弄清楚如何将它们放在一起,或者答案就在那里,我无法识别它: - /
我想要实现的目标:
我在局域网中运行了一个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;
}
}