我有一个NGINX安装程序,在我的本地网络上提供一个React应用程序和一个API,带有一个由letsencrypt生成的有效SSL证书。
我的域名由domain.com提供,我将它称为mydomain.com
我的应用程序在主机上工作得很好(目前我的笔记本电脑),但当我试图在移动(连接到同一个网络)上打开它时,它会返回403个禁止的错误。
我的配置文件中是否有错误,或者您能告诉我是什么原因造成的吗?
/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发布于 2023-02-01 15:50:48
Localhost是指回送地址。这实际上不同于你在家里可能拥有的本地网络。
我认为问题在于,您不能将外部流量定向到本地主机。相反,您需要将服务器托管到0.0.0.0 (所有ip地址)或本地ip地址(可能是192.168.x.x),以便使用另一个设备访问站点。
指定in /etc/host会告诉您的笔记本电脑,到您的域的通信应该被路由到本地主机,但是您的手机无法读取此信息。
发布于 2023-02-01 16:30:02
如果您试图从移动设备访问domain.com,并且您无法控制domain.com的DNS,则除非您的内部DNS服务器解析了该DNS记录(例如FritzBox),否则设备将无法正确解析主机名。因此,您需要创建一个DNS记录,您的移动设备可以解析。
在这种情况下,您应该为您的开发任务(如dev.domain.com IN A 192.168.1.1 )创建一个DNS记录,其中192.168.1.1是您的笔记本电脑的本地网络地址。
https://serverfault.com/questions/1121704
复制相似问题