本地主机 NGINX 服务器返回 403 Forbidden,但在主机上可以正常工作

本地主机 NGINX 服务器返回 403 Forbidden,但在主机上可以正常工作

我有一个 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.1192.168.1.1您的笔记本电脑的本地网络地址在哪里。

相关内容