Mac环境下使用Nginx实现80端口转发8080端口

由于项目本身的原因,开发必须使用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 nginx
brew 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 也可以,但两者有区别。
前者是系统启动时启动,后者则是在用户登录时启动。 接着执行launchctl load -w,如下:

sudo cp /usr/local/opt/nginx/*.plist /Library/LaunchDaemons

sudo chown root /Library/LaunchDaemons/homebrew.mxcl.nginx.plist
执行上面的命令首先给文件赋权限,而后执行下面的命令
sudo launchctl load -w /Library/LaunchDaemons/homebrew.mxcl.nginx.plist

最后,重启你的机器,你会发现nginx在80端口启动了,试着通过http://localhost直接访问,若出现下边图片的显示则意味着你的Nginx的80端口已经配置完成,意味着你已经完成了六成的工作。

Nginx欢迎页面

如果你Tomcat的端口是8080,此时你便要启动它,之所以在此时启动Tomcat是为了先让Tomcat占用8080端口,因为在后面配置Nginx转发时需要配置8080端口的转发,为了在那个时候不被Nginx抢先占用8080端口(这里也可以不启动Tomcat,只要你在配置好nginx转发配置后不要立刻启动nginx服务即可,因为启动它便直接占用8080端口实现转发,而这时其实你还未使用8080端口)导致Tomcat的启动的失败,因此可以先让Tomcat占用端口而后在进行Nginx对8080端口的映射转发。
此时你的Tomcat已经启动好了,此时我们开始配置Nginx的转发配置:

命令行

sudo vim /usr/local/etc/nginx/nginx.conf
你只需关心server节点内的配置即可

Nginx_conf.png

server下的结点:

listen:监听80端口
server_name:转发到哪个地址
proxy_pass:代理到哪个地址

这其中几项配置完毕,我们将Nginx重启(重启是需要切换到Nginx目录下的) sudo /usr/local/Cellar/nginx/1.12.1/bin/nginx -s reload

到这里所有的操作都已完毕,现在你和你同一网段下的其他伙伴就可以通过直接访问IP地址/<项目名> 访问你的Tomcat项目了。

相关命令操作

Apache命令

停止服务:sudo /usr/sbin/apachectl stop
开启服务:sudo /usr/sbin/apachectl start
重启服务:sudo /usr/sbin/apachectl restart

Nginx命令(需要在Nginx的目录下执行,目录:/usr/local/Cellar/nginx/1.12.1/bin/)

开启:sudo nginx
重启:sudo nginx -s reload
关闭
首先 ,查询nginx主进程号(带有master标识的进程):ps -ef|grep nginx
正常停止 sudo kill -QUIT 主进程号
快速停止 sudo kill -TERM 主进程号

感谢以下博客的博主

http://www.cnblogs.com/kavlez/p/start-nginx-on-port-80-at-os-x.html
http://blog.csdn.net/seafishyls/article/details/44546809
http://www.cnblogs.com/94cool/p/3927084.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,100评论 18 139
  • 第一章 Nginx简介 Nginx是什么 没有听过Nginx?那么一定听过它的“同行”Apache吧!Ngi...
    JokerW阅读 32,462评论 24 1,003
  • 本来这篇文章是作为自己私有记录的,所以也没有MarkDown(主要是不怎么写博客,也不熟悉)。稍微修改一下就发上来...
    v587的毅哥阅读 2,974评论 0 22
  • 我们或因过去的牵绊,或因对未来的寄望,以及这两者与当下的差距而心猿意马,耗尽心神。我们相信,在拥有某种经验,财富,...
    Mercy2016阅读 194评论 0 0
  • 一些常见的状态码为:200 – 服务器成功返回网页 404 – 请求的网页不存在 503 – 服务不可用 1xx(...
    yann_x阅读 211评论 0 0