我尝试将Nginx配置为在.local
上使用通配符子域,其中子域也是文件夹的名称。例如,test-site.local:8080
的位置根应为/Users/ashley/www/sites/test-site/wwwdata
,another.local:8080
应为/Users/ashley/www/sites/another/wwwdata
。
我已根据Nginx docs在nginx.conf
中设置了以下配置:
server {
listen 8080;
server_name mbp.local ~^(?<domain>.+)\.local$;
location / {
root /Users/ashley/www/sites/$domain/wwwroot;
index index.html;
}
}
这不起作用(无法访问站点),如果我检查error.log,则不会收到任何错误消息。但是,mbp.local
确实会产生错误:
2018/01/18 18:30:57 [error] 4968#0: *1 "/Users/ashley/www/sites//wwwroot/index.html" is not found (2: No such file or directory), client: 192.168.0.10, server: mbp.local, request: "GET / HTTP/1.1", host: "mbp.local:8080"
我做错了什么?
修改
我已从mbp.local
中删除了server_name
因为我认为它与正则表达式不匹配,因此没有$domain
变量传递到该位置。如果我现在尝试子域,则没有错误条目。基于站点无法在浏览器中出现错误和缺少条目,我只能假设DNS查找失败。我使用dnsmasq来解析.local
网址,这是正常的:
dig another.local @127.0.0.1
;; QUESTION SECTION:
;another.local. IN A
;; ANSWER SECTION:
another.local. 0 IN A 127.0.0.1
我的网络设置中没有配置DNS服务器,并且添加127.0.0.1
没有做 - 只会导致所有DNS查找失败。关于为什么这不起作用的任何建议?
答案 0 :(得分:0)
原来它既不是Nginx(除了错误的mbp.local
)也不是dnsmasq问题,而是macOS网络配置问题。
我需要在我的网络偏好设置中添加.local
作为搜索域。