使用 .localhost 而不是用 .dev 进行 web 开发

Submitted by dravenk on Wed, 12/13/2017 - 19:55

使用 DnsmasqNginx 配置本地开发环境。

对比原先的开发环境:

  • web/appA
  • web/appB
  • web/appC

每在 web 目录下增加一个应用,需要更改 nginx 的配置文件并编辑 /etc/hosts 文件。将web应用添加到 host 文件中。
使用 Dnsmasq 和 Nginx 后,将 Nginx 配置中添加以下内容

server {
      listen 80;
      server_name ~^(?<sub>.+)\.localhost$;
      root /Users/dravenk/app/web/$sub;
}  

并且将 Dnsmasq 配置添加以下规则
address=/localhost/127.0.0.1
目的将本地的 DNS 指向 /Users/dravenk/app/web/ 下的每一个应用,并且都将生成一个对应的 URL ,访问每一个应用可以通过浏览器 RUL 访问:

  • appa.localhost
  • appb.localhost
  • appc.localhost

仍然使用本地开发环境的原因是 docker 在 mac 上跑 drupal 应用时候很慢,而 docker-sync 仍然没有很好解决我的开发环境问题,所以在 mac 上做drupal 开发时候仍然主要使用本地开发环境。对于 Linux 用户,仍然非常推荐使用 docker 作为开发环境的解决方法。

由于 .dev 域名已在 2014 年被登记注册,所以如果使用 .dev 为本地应用 DNS 域名后缀,那么需要访问外网的 .dev 为域名后缀的地址都将指向本地而无法正常访问。所以建议使用 RFC 文献中的域名后缀作为开发环境指向的后缀。
Reference :
https://iyware.com/dont-use-dev-for-development/
https://www.iana.org/domains/root/db/dev.html
https://tools.ietf.org/html/rfc6762
https://tools.ietf.org/html/rfc2606
https://tools.ietf.org/html/rfc6761
https://www.iana.org/domains/root/db/dev.html