我想将我的 Web 服务器上的所有 http 请求重写为 https 请求,我从以下内容开始:
服务器 {
听80;
地点 / {
重写 ^(.*) https://mysite.com$1 永久;
}
...
一个问题是这会剥离任何子域信息(例如,node1.mysite.com/folder),我如何重写上述内容以将所有内容重新路由到 https 并维护子域?
我正在使用 GCP 负载平衡并希望将 HTTP 重定向到 HTTPS 链接。但是想不通。
我的负载平衡看起来像:
Load balancer name
Front End:
Protocols IP Certificate
HTTP x.x.x.x:80 -
HTTPS x.x.x.x:443 example-com
Back End:
Hosts Paths Backend
example.com /* webs-backend
Run Code Online (Sandbox Code Playgroud)
我的 webs 后端是一个简单的 nginx web 服务器,它侦听 TCP/80 端口。Nginx 服务器配置:
server {
server_name example.com;
root /var/www/html;
<snip>
}
Run Code Online (Sandbox Code Playgroud)
现在有了这个 GCP 负载平衡设置,我可以访问 HTTP 和 HTTPS,尝试配置 Nginx 以将客户端 301 重定向发送到 HTTPS,但它不起作用。重定向过多。
问题是,如何配置 GCP 负载平衡以正确将 HTTP 重定向到 HTTPS?
似乎有很多问题和指南指导如何设置 nginx 以将 http 请求重定向到 https。许多已经过时,或者只是完全错误。
# MANAGED BY PUPPET
upstream gitlab {
server unix:/home/git/gitlab/tmp/sockets/gitlab.socket;
}
# setup server with or without https depending on gitlab::gitlab_ssl variable
server {
listen *:80;
server_name gitlab.localdomain;
server_tokens off;
root /nowhere;
rewrite ^ https://$server_name$request_uri permanent;
}
server {
listen *:443 ssl default_server;
server_name gitlab.localdomain;
server_tokens off;
root /home/git/gitlab/public;
ssl on;
ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem;
ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers AES:HIGH:!ADH:!MDF;
ssl_prefer_server_ciphers on;
# individual nginx logs for this gitlab vhost
access_log /var/log/nginx/gitlab_access.log;
error_log …Run Code Online (Sandbox Code Playgroud) 我的服务器上有许多 SSL 主机通过 Nginx SNI 提供服务。
但是,当我输入该服务器的 IP 地址时,我会看到第一个配置的虚拟主机带有证书警告。
是否可以完全停用默认 SSL 主机?
关于你们如何做的任何其他想法?
当主机尝试通过 HTTP 浏览时,我尝试将其重定向到我的网络上的特定链接。
我尝试重定向的主机的 IP 地址是192.168.2.19,我的网络服务器位于192.168.2.15:6969/test.js。当我重定向用户时,我只能让他访问192.168.2.15:6969,而不能访问相对路径。我尝试在iptables命令中指定但它不起作用。
这就是我所做的:
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3000
iptables -t nat -A POSTROUTING -j MASQUERADE
iptables -t nat -A PREROUTING -s 192.168.2.19 -p tcp --dport 80 -j DNAT
--to-destination 192.168.2.15:3000/test.js
Run Code Online (Sandbox Code Playgroud)