使用Nginx通过HTTPS运行Haskell仆人



我正在尝试弄清楚如何使用nginx通过HTTPS正确运行servant api端点。

,请仔细研究我所做的事情。因此,我认为我可能需要设置仆人,以便通过HTTPS进行通信。所以我将其添加到我的代码

  Development -> run port $ logStdoutDev $ corsWithContentType $ app cfg
  Production  -> runTLS (tlsSettings "./certs/fullchain1.pem" "./certs/privkey1.pem")
                        (setPort port defaultSettings)
                        (corsWithContentType $ app cfg)

因此,生产条款是我的生产服务器上运行的内容。然后,我将其在nginx

upstream api_server {
    server 127.0.0.1:8081;
}

location /api {
    proxy_set_header Host $host;
    proxy_pass http://api_server;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/xxx/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/xxx/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

使用此设置,我从页面执行AJAX请求(通过HTTPS正确运行(。但是,当我这样做时,我会得到仆人服务器的回复

InsecureConnectionDenied

好像我的ajax请求不安全。我相信,如果我在使用HTTPS的页面形成Ajax请求,请求是安全的。

如果我跳过了所有这些,并且只需在没有TLS的情况下运行仆人,则在尝试发布时不允许使用405方法。我知道这是连接到HTTPS的,因为当我直接执行请求时,请直接执行IP:API的端口。这里有什么问题?

这是因为Nginx配置中的"/api"前缀。该请求被发送给仆人为"/API/注册",但应该是"/注册"。nginx中的错误配置,与仆人和https无关。

最新更新