Nginx 将请求重定向到https webhook

Nginx 将请求重定向到https webhook,nginx,stripe-payments,Nginx,Stripe Payments,我最近修改了我的nginx服务器,将所有www.mysite请求重定向到https://mysite 问题是,当我这么做的时候,我设置的stripe webhook现在失败了,出现了301重定向错误。如何将我的nginx服务器更改为只重定向来自我的域的请求?(或者至少我认为这是解决方案,我是一个前端人员) 这是我的服务器 server { listen 443; server_name mysite.com; root /var/www/mysite.com/app/my

我最近修改了我的nginx服务器,将所有
www.mysite
请求重定向到
https://mysite

问题是,当我这么做的时候,我设置的stripe webhook现在失败了,出现了301重定向错误。如何将我的nginx服务器更改为只重定向来自我的域的请求?(或者至少我认为这是解决方案,我是一个前端人员)

这是我的服务器

server {
    listen 443;
    server_name mysite.com;
    root /var/www/mysite.com/app/mysite;

    ssl on;
    ssl_certificate /etc/nginx/ssl/cert.crt;
    ssl_certificate_key /etc/nginx/ssl/mykey.key;

    #enables SSLv3/TLSv1, but not SSLv2 which is weak and should no longer be used.
    ssl_protocols SSLv3 TLSv1;
    #Disables all weak ciphers
    ssl_ciphers ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM;


    location / {
        proxy_pass        http://127.0.0.1:3000/;
        proxy_redirect    off;
        proxy_set_header  Host            $host;
        proxy_set_header  X-Real-IP        $remote_addr;
        proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
    }
}

server {
  listen 80;
  server_name www.mysite.com;
  return 301 https://mysite.com$request_uri;
}

你可以做的是从重定向中排除Stripe,我认为出于安全原因,他们的钩子不会跟随重定向,这是公平的,所以试着看看他们使用什么IP,确保如果
$http\u x\u real\u IP
$remote\u addr
来自Strip的IP列表,你不会重定向

但正如Stripe明确指出的:

。。。因为我们偶尔要调整这个IP列表 在没有任何事先通知的情况下,我们强烈建议 使用基于IP的访问控制来保护webhook端点。 相反,我们建议通过SSL为webhook端点提供服务, 在webhook URL中嵌入只有用户知道的秘密标识符 您和Stripe,和/或从我们的API按ID检索事件


因此,我的答案是检查请求的位置是否是条带webhook,然后在不重定向的情况下提供它,否则重定向请求

正如mpcabd提到的,出于安全原因,条带webhook不会遵循重定向。正如他还提到的,虽然你可以通过IP进行过滤,但这是一场永无止境的战斗(Stripe此前表示,他们确实打算最终停止发布IP列表)

更简单、更好的“设置并忘记”解决方案:

在中,重新配置Webhook以使用HTTPS


砰。完成。

请将中间证书与已签名的SSL证书连接起来

参考:

噢,天哪,我真是个白痴,没想到这一点!哈哈,谢谢你!往往是显而易见的东西被忽视了