/ etc / nginx / sites-enabled / default

server {
    listen 80 default_server;
    root /var/www/example;
    index index.php;
    server_name localhost;

    location / {
        try_files $uri/ /index.php
    }
    ...
}


这很好。我没有在该实例上安装SSL。除了来自AWS API-Gateway的调用外,我想防止访问我的api(扩展到多个EC2实例)。我在API网关控制台(.pem)下创建了一个客户端证书,并将以下内容添加到了nginx配置中:

server {
    listen 443;
    ssl on;
    ssl_client_certificate /etc/nginx/ssl/cert.pem;
    ssl_trusted_certificate /etc/nginx/ssl/cert.pem;
    ssl_verify_client on;

    root /var/www/example
    index index.php;
    server_name localhost;

    location / {
        try_files $uri /index.php
    }

    ...
}


错误日志显示'/ etc / nginx / sites-enabled / default:24中未为“ ssl”指令定义ssl_certificate。好,可以。我尝试了Nginx文档中的其他技巧,但是没有运气。绕过认证并将if-then添加到nginx config以仅接受来自API网关的流量怎么办?怎么做到呢?您认为在接收端不需要SSL的最佳方法是什么?

最佳答案

由于您使用的是客户端证书来保护您的端点,因此API Gateway需要HTTPs协议。如果没有有效的证书,API Gateway服务将不信任任何集成端点。另外,关于how to setup Client side certificate auth in Nginx的文档非常清晰。您可能还想看看。

07-24 09:38
查看更多