利用Nginx和Host把自定义域名指向本地

假如有域名a.com,怎么把它和自己的本地目录做链接呢?今天玩Nginx的时候终于知道怎么玩了。简单记录一下。

原理

  • 利用hosts把域名指向本地即127.0.0.1
  • 利用nginx进行域名跳转和目录指定

实施

安装nginx

brew install nginx

修改配置

sudo vim /usr/local/etc/nginx/nginx.conf
#修改默认的8080端口为80

如果你开启了apache,可能会造成403,把apache关了就行

给予管理员权限

sudo chown root:wheel /usr/local/opt/nginx/bin/nginx
sudo chmod u+s /usr/local/opt/nginx/bin/nginx

加入launchctl启动控制

mkdir -p ~/Library/LaunchAgents
cp /usr/local/opt/nginx/homebrew.mxcl.nginx.plist ~/Library/LaunchAgents/
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist

运行nginx

sudo nginx #打开 nginx
nginx -s reload|reopen|stop|quit  #重新加载配置|重启|停止|退出 nginx
nginx -t   #测试配置是否有语法错误

用法详解

nginx [-?hvVtq] [-s signal] [-c filename] [-p prefix] [-g directives]

选项列表

-?,-h           : 打开帮助信息
-v              : 显示版本信息并退出
-V              : 显示版本和配置选项信息,然后退出
-t              : 检测配置文件是否有语法错误,然后退出
-q              : 在检测配置文件期间屏蔽非错误信息
-s signal       : 给一个 nginx 主进程发送信号:stop(停止), quit(退出), reopen(重启), reload(重新加载配置文件)
-p prefix       : 设置前缀路径(默认是:/usr/local/Cellar/nginx/1.2.6/)
-c filename     : 设置配置文件(默认是:/usr/local/etc/nginx/nginx.conf)
-g directives   : 设置配置文件外的全局指令

配置

以上都完成之后,浏览器输入localhost如果能够正常访问证明就可以了。

接下来进行下一步的配置

找到nginx的配置目录,不同的版本可能不太一样
我的是在/usr/local/etc/nginx,进入servers目录,有的可能叫conf.d,新建你的配置文件

vim demo.conf

编辑配置文件

server {
  listen 80;
  server_name a.com;
  root /Users/dctxf/Desktop/demo;
}

浏览器输入a.com是不是能访问了。

问题

mac hosts文件不生效

在学习过程中发现hosts文件不生效,必须重启,后来才发现重启网络服务就行,具体什么原因还不是很清楚,网上有说是因为浏览器的长链接,关闭浏览器或者隐身模式访问,我试了下还是不行。因为我用了surge,发现重新加载surge的配置文件就行,不清楚具体原因。

nginx命令不能用

输入nginx命令后会提示无此命令,应该是环境变量的问题,我的解决办法是修改了.zshrc的配置

export PATH=${PATH}:/usr/local/Cellar/nginx/1.10.1/bin

你可能感兴趣的:(利用Nginx和Host把自定义域名指向本地)