由于项目本身的原因,开发必须使用80端口实现,而在Unix内核中非Root用户无法直接使用1024以下的端口,最初作者找到了pfctl的方式实现80端口转发到8080端口实现访问,经过亲测出现了最为严重的问题,按照当时的方法配置好之后发现本机Mac通过localhost/<项目名>和127.0.0.1/<项目名>可以访问,此时很是兴奋,但出现了最根本的问题,那就是同局域网内其他机器通过访问IP地址/<项目名>(例如:IP地址是192.168.0.106,那么其他机器访问192.168.0.106/<项目名>)却访问不到,本来就是为了实现同网段开发和测试并行,结果其他机器却无法访问意味着这一次的搬砖是竹篮打水。
后来作者就利用Nginx进行80端口转发到Tomcat的8080端口实现访问,作者亲测果然好使,好了废话不多说了,干货走起来~~下面就是详细的配置步骤:
环境
Mac OS版本: 10.12.6
Nginx版本: 1.12.1
安装
作者使用Homebrew安装库
brew search nginxbrew install nginx
这样安装好之后你会发现nginx的监听端口是8080,并非80,那么此时你就需要更改Nginx的监听端口,那么这一步就很关键了,不能按照以往传统的方式去更改,读者请仔细看一下部分。
由于Mac OS是自带Apache服务的,它本身占用了80端口,首先你需要将Apache的监听端口改为其他或者直接将其卸载,作者是改掉它的监听端口为8011。
命令行
sudo vim /etc/apache2/httpd.conf
图片中红色框打开原本是80端口,作者已将其改为8011。
apache_conf.png
改动之后,将其重启 sudo /usr/sbin/apachectl restart
到这里,你已经将80端口释放掉了。
其次你需要了解的就是plist文件。plist就是property list format的意思,是苹果用来保存应用数据的格式,其实就是个xml。可以在/usr/local/opt/nginx 下找到nginx对应的plist文件,比如在作者电脑上是 homebrew.mxcl.nginx.plist 。
它的内容如下:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict><key>Label</key><string>homebrew.mxcl.nginx</string><key>RunAtLoad</key><true/><key>KeepAlive</key><false/><key>ProgramArguments</key><array><string>/usr/local/opt/nginx/bin/nginx</string><string>-g</string><string>daemon off;</string></array><key>WorkingDirectory</key><string>/usr/local</string></dict></plist>
需要把这个文件复制到 /Library/LaunchDaemons 下,如果是 ~/Library/LaunchAgents 也可以,但两者有区别。
新闻热点
疑难解答