Nginx。将https请求限制为一个域

问题描述 投票:0回答:1

我正在Nginx后面运行一个api。通过Nginx在公司域上设置了Certbot SSL证书。

我可以通过https://www.my-domain.com使用api,并且https://www.another-app.com上有一个仅通过https占用第一个域的应用程序。

现在每个人都可以访问https://www.my-domain.com上的数据,但我需要只能从https://www.another-app.com所有子域访问nginx服务器

这是我的Nginx默认配置文件

server{

    root /var/www/html;

    server_name my-domain.com www.my-domain.com;
    location / {
        proxy_pass http://localhost:8000; 
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;

    }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/www.my-domain.com/fullchain.pem; 
    ssl_certificate_key /etc/letsencrypt/live/www.my-domain.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf; 
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}

server {
    if ($host = my-domain.com) {
        return 301 https://$host$request_uri;
    } 


    if ($host = www.my-domain.com) {
        return 301 https://$host$request_uri;
    } 

server_name my-domain.com www.my-domain.com;
    listen 80;
    return 404; 
}
rest api security nginx
1个回答
0
投票

出于您未提供足够信息/需要更多关注的基础,人们将投票决定将其关闭。

您的问题定义-您要基于域限制访问权限-尚不清楚。术语“域”适用于不同上下文中的不同事物。假设您指的是DNS域-那么您需要重新考虑问题。实际上,尽管可以使用PTR记录来解析主机属于哪个DNS域,但大多数人由于技术原因以及它们带来的收益有限而不会维护PTR记录。即使有数据,对每个请求使用它进行身份验证也会非常慢。最终,这归结为基于要求保护的主机身份授权访问-这几乎没有安全性价值。

OTOH,如果所有机器都在同一个子网中,则由您的公司控制该子网,并且该子网中没有要排除的主机,在这种情况下,使用IP地址进行身份验证可能会具有一定的价值-nginx乐于处理此问题该框使用基于CIDR的表示法。

对于一组分布式主机(即,并非全部在同一子网中),您将需要使用某种基于令牌的身份验证。常见的是共享机密(密码)和客户端证书。

© www.soinside.com 2019 - 2024. All rights reserved.