将 VPS 与 nginx 一起使用时在多个子域上启用 cloudflare?
Enable cloudflare on multiple subdomains when using VPS with nginx?
有一台 VPS 配置了 nginx'om 的机器,上面有 10 个站点正在旋转结构
tester.example.com
api-one.tester.example.com
api-two.tester.example.com
api-3.tester.example.com
api-4.tester.example.com
api-5.tester.example.com
api-6.tester.example.com
中央站点在单独的主机上旋转
在 nginx 中,我将默认站点 tester.example.com 配置为使用来自 cloudflare 服务的 ssl
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name tester.example.com www.tester.example.com;
return 302 https://$server_name$request_uri;
}
server {
# SSL configuration
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
ssl on;
ssl_certificate /etc/ssl/certs/cert.pem;
ssl_certificate_key /etc/ssl/private/private.pem;
ssl_client_certificate /etc/ssl/certs/cloudflare.crt;
ssl_verify_client on;
server_name tester.example.com www.tester.example.com;
root /var/server/site/;
index index.html index.htm index.nginx-debian.html;
location / {
# try_files $uri $uri/ =404;
proxy_pass http://localhost:8880;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
没有https-使用常规ip:端口,打开通过所有服务
如何使 api-one.tester.example.com 配置等,以便它们也可以通过 ssl 打开?
我尝试更改子域配置中的端口(支持 cloudflare 的 8443),但没有给出预期的结果
.....
listen 8443 ssl http2;
listen [::]:8443 ssl http2;
ssl on;
.....
您通常必须在 Cloudflare DNS 设置中单独设置子域,除非您使用 *.wildcard,但我认为他们不再支持了。
如果您希望 Cloudflare 路由 https/ssl 上的所有子域,Cloudflare 仪表板上有一个选项 > 加密 > 始终使用 HTTPS。在这种情况下,如果您的域是通过纯 http 访问的,它们将重定向到 https。这当然需要您的服务器设置为支持域的 SSL(无论 Cloudflare)或者您在 Crypto > SSL 设置下使用 "Flexible",这允许 Cloudflare 通过 https 为客户端提供您的网站,尽管从您的服务器到 Cloudflare 的数据在没有 SSL 的情况下提供。
有一台 VPS 配置了 nginx'om 的机器,上面有 10 个站点正在旋转结构
tester.example.com
api-one.tester.example.com
api-two.tester.example.com
api-3.tester.example.com
api-4.tester.example.com
api-5.tester.example.com
api-6.tester.example.com
中央站点在单独的主机上旋转
在 nginx 中,我将默认站点 tester.example.com 配置为使用来自 cloudflare 服务的 ssl
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name tester.example.com www.tester.example.com;
return 302 https://$server_name$request_uri;
}
server {
# SSL configuration
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
ssl on;
ssl_certificate /etc/ssl/certs/cert.pem;
ssl_certificate_key /etc/ssl/private/private.pem;
ssl_client_certificate /etc/ssl/certs/cloudflare.crt;
ssl_verify_client on;
server_name tester.example.com www.tester.example.com;
root /var/server/site/;
index index.html index.htm index.nginx-debian.html;
location / {
# try_files $uri $uri/ =404;
proxy_pass http://localhost:8880;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
没有https-使用常规ip:端口,打开通过所有服务
如何使 api-one.tester.example.com 配置等,以便它们也可以通过 ssl 打开?
我尝试更改子域配置中的端口(支持 cloudflare 的 8443),但没有给出预期的结果
.....
listen 8443 ssl http2;
listen [::]:8443 ssl http2;
ssl on;
.....
您通常必须在 Cloudflare DNS 设置中单独设置子域,除非您使用 *.wildcard,但我认为他们不再支持了。
如果您希望 Cloudflare 路由 https/ssl 上的所有子域,Cloudflare 仪表板上有一个选项 > 加密 > 始终使用 HTTPS。在这种情况下,如果您的域是通过纯 http 访问的,它们将重定向到 https。这当然需要您的服务器设置为支持域的 SSL(无论 Cloudflare)或者您在 Crypto > SSL 设置下使用 "Flexible",这允许 Cloudflare 通过 https 为客户端提供您的网站,尽管从您的服务器到 Cloudflare 的数据在没有 SSL 的情况下提供。