我有一个 NGINX 设置,在本地网络上为 React 应用程序和 API 提供服务,并带有由 letsencrypt 生成的有效 SSL 证书。
我的域名由域名.com,我将把它称为mydomain.com
我的应用程序在主机(目前是我的笔记本电脑)上运行良好,但当我尝试在移动设备(连接到同一网络)上打开它时,它返回 403 Forbidden 错误。
我的配置文件中是否存在错误,或者您能告诉我导致这种情况的原因是什么吗?
/etc/nginx/sites-enabled/mydomain.com
:
server {
server_name mydomain.com;
root /home/build;
index index.html index.htm;
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/mydomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mydomain.com/privkey.pem;
location /api {
proxy_pass http://localhost:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header x-forwarded-proto https;
proxy_cache_bypass $http_upgrade;
}
location / {
try_files $uri $uri/ =404;
}
}
/etc/hosts
:
...
127.0.1.1 mydomain.com
答案1
Localhost 指的是环回地址。这实际上与您家中的本地网络不同。
我认为问题在于您无法将外部流量引导至本地主机。相反,您需要将服务器托管到 0.0.0.0(所有 IP 地址)或笔记本电脑的本地 IP 地址(可能是 192.168.xx),以便使用其他设备访问该站点。
/etc/hosts 中指定的内容会告诉您的笔记本电脑,到您的域的流量应该路由到本地主机,但您的手机无法读取该信息。
答案2
如果你想达到你的域名.com您的移动设备无法控制域名.com,除非该 DNS 记录由您的内部 DNS 服务器(例如 FritzBox)解析,否则您的设备将无法正确解析主机名。因此,您需要创建您的移动设备可以解析的 DNS 记录。
在这种情况下,您应该为您的开发任务创建一个 DNS 记录,例如dev.domain.com IN A 192.168.1.1
,192.168.1.1
您的笔记本电脑的本地网络地址在哪里。