rest - 将 HTTP 重定向到 HTTPS 会丢失数据?
问题描述
我使用 certbot 为我的域创建 SSL 证书。它自动修改了我的 Nginx 配置。以下是将 http (80) 重定向到 https (443) 的部分:
server {
if ($host = domain.tld) {
return 301 https://$host$request_uri;
} # managed by Certbot
if ($host = www.domain.tld) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80 default_server;
listen [::]:80 default_server;
server_name www.suzaku.pw suzaku.pw;
return 404;
}
这似乎行得通。但问题是任何 POST/PUT/DELETE 请求现在都被解释为 GET 请求:
http://domain.tld/api只懂 GET
https://domain.tld/api适用于所有 GET/POST/PUT/DELETE
_
下面是其余的配置(HTTP 被转发到的地方)
server {
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name www.domain.tld domain.tld;
location / { try_files $uri $uri/ =404; }
location ~ \.php$ { ... }
listen [::]:443 ssl http2 default_server ipv6only=on; # managed by Certbot
listen 443 ssl http2 default_server; # managed by Certbot
ssl on;
ssl_certificate /etc/letsencrypt/live/www.domain.tld/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/www.domain.tld/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
location ^~ /jenkins/ { ... }
location ^~ /api {
proxy_pass http://localhost:6000;
proxy_http_version 1.1;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Host $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
我的配置中有任何明显的错误吗?
解决方案
推荐阅读
- angularjs - Angular JS 多语言翻译
- c++ - 如何解决带有指向 Base 的指针的 Base 类必须是指向 Son 的指针?(在 C++ 中)
- ruby - 如何将文件写入目录或文件夹。红宝石
- python - 如何在 Sympy 表达式中获得第 n 个术语?
- vhdl - VHDL:通过std_logic_vector的相应宽度的宽度找到整数范围
- bootstrap-4 - 引导表单元格中的响应式 ChartJS
- amazon-web-services - AWS VPC:路由表如何将本地流量重定向到正确的子网和实例?
- python - 使用 Django/Python 时查找唯一查询值
- ios - UITableViewController 上的 selectRowAtIndexPath
- c++ - 用 T=int& 返回 T(t),如何?