我正在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;
}
出于您未提供足够信息/需要更多关注的基础,人们将投票决定将其关闭。
您的问题定义-您要基于域限制访问权限-尚不清楚。术语“域”适用于不同上下文中的不同事物。假设您指的是DNS域-那么您需要重新考虑问题。实际上,尽管可以使用PTR记录来解析主机属于哪个DNS域,但大多数人由于技术原因以及它们带来的收益有限而不会维护PTR记录。即使有数据,对每个请求使用它进行身份验证也会非常慢。最终,这归结为基于要求保护的主机身份授权访问-这几乎没有安全性价值。
OTOH,如果所有机器都在同一个子网中,则由您的公司控制该子网,并且该子网中没有要排除的主机,在这种情况下,使用IP地址进行身份验证可能会具有一定的价值-nginx乐于处理此问题该框使用基于CIDR的表示法。
对于一组分布式主机(即,并非全部在同一子网中),您将需要使用某种基于令牌的身份验证。常见的是共享机密(密码)和客户端证书。