gpt4 book ai didi

node.js - nginx 配置 - 将 http 转发到 https,将 www.domain.tld 转发到 domain.tld 和两个子域

转载 作者:行者123 更新时间:2023-12-04 19:19:34 26 4
gpt4 key购买 nike

我正在尝试将 nginx 配置为:

http://www.domain.tld --> https://domain.tld
http://domain.tld --> https://domain.tld
http://api.domain.tld --> https://api.domain.tld

“www”-webroot 服务于静态 HTML (AngularJS),API 服务于一个 Node.JS 应用程序,该应用程序应该从 localhost:3000 “上游”。我想我的方向是正确的,但它似乎对我不起作用。这是我到目前为止所得到的:
upstream api_server {
server localhost:3000;
keepalive 64;
}

server {
listen 80;
server_name api.domain.tld;
return 301 https://api.domain.tld$request_uri;
}

server {
listen 80;
server_name *.domain.tld www.domain.tld;
return 301 https://domain.tld$request_uri;
}

server {
listen 443 ssl;
server_name api.domain.tld;

ssl_certificate /etc/ssl/ssl_cert.crt;
ssl_certificate_key /etc/ssl/ssl_key.key;
ssl_protocols SSLv3 TLSv1;
ssl_ciphers HIGH:!aNULL:!MD5;

location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;

proxy_pass http://api_server/;
proxy_redirect off;
}

server {
listen 443 ssl;
server_name *.domain.tld www.domain.tld;

ssl_certificate /etc/ssl/ssl_cert.crt;
ssl_certificate_key /etc/ssl/ssl_key.key;
ssl_protocols SSLv3 TLSv1;
ssl_ciphers HIGH:!aNULL:!MD5;

root /var/www/webroot/;
}

现在这一切都在我的 /etc/nginx/conf.d/domain.tld.conf文件。

任何帮助将非常感激。

编辑:

我自己已经弄清楚了(Tan Hong Tat 的一点帮助),所以这个例子被更新了。

如果您有任何改进,请告诉我,我会更新它。

最佳答案

在 HTTP 的服务器 block 中将 HTTP 重定向到 HTTPS。删除 listen 80在 HTTPS 服务器 block 中。

    server {
listen 80;
server_name domain.tld www.domain.tld;
return 301 https://domain.tld$request_uri;
}
server {
listen 80;
server_name api.domain.tld;
return 301 https://api.domain.tld$request_uri;
}

server {
listen 443 ssl;
server_name domain.tld www.domain.tld api.domain.tld;

location / {
proxy_redirect off;
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 Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_set_header Connection "";
proxy_http_version 1.1;
proxy_cache one;
proxy_cache_key sfs$request_uri$scheme;
proxy_pass http://domain_tld_api_server;
}
}

关于node.js - nginx 配置 - 将 http 转发到 https,将 www.domain.tld 转发到 domain.tld 和两个子域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25147881/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com