服务器之家:专注于服务器技术及软件下载分享
分类导航

云服务器|WEB服务器|FTP服务器|邮件服务器|虚拟主机|服务器安全|DNS服务器|服务器知识|Nginx|IIS|Tomcat|

服务器之家 - 服务器技术 - Nginx - Mac中使用Nginx实现80端口转发8080端口

Mac中使用Nginx实现80端口转发8080端口

2019-12-07 16:55Mr小智 Nginx

端口转发(Port forwarding),有时被叫做隧道,是安全壳(SSH) 为网络安全通信使用的一种方法。端口转发是转发一个网络端口从一个网络节点到另一个网络节点的行为,其使一个外部用户从外部经过一个被激活的NAT路由器到达一个在

由于项目本身的原因,开发必须使用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安装库

?
1
2
brew search nginx
brew install nginx

这样安装好之后你会发现nginx的监听端口是8080,并非80,那么此时你就需要更改Nginx的监听端口,那么这一步就很关键了,不能按照以往传统的方式去更改,读者请仔细看一下部分。
由于Mac OS是自带Apache服务的,它本身占用了80端口,首先你需要将Apache的监听端口改为其他或者直接将其卸载,作者是改掉它的监听端口为8011。

命令行

sudo vim /etc/apache2/httpd.conf

图片中红色框打开原本是80端口,作者已将其改为8011。

Mac中使用Nginx实现80端口转发8080端口
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 。
它的内容如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?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 launchctl load -w /Library/LaunchDaemons/homebrew.mxcl.nginx.plist

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

Mac中使用Nginx实现80端口转发8080端口

如果你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节点内的配置即可

Mac中使用Nginx实现80端口转发8080端口
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.jianshu.com/p/2e93c3ee6270

延伸 · 阅读

精彩推荐
  • Nginx通过Nginx规则重写URL去掉index.php不显示index.php

    通过Nginx规则重写URL去掉index.php不显示index.php

    Nginx不仅占用内存少,并发能力强,而且拓展功能丰富,可以通过安装模板来强化功能,也能通过规则优化,优化服务器并发处理能力,是建站的不二之选...

    Genius日记5872020-10-16
  • Nginxnginx rewrite 伪静态配置参数和使用例子

    nginx rewrite 伪静态配置参数和使用例子

    nginx下伪静态配置参数详细说明,使用nginx的朋友,nginx rewrite 伪静态配置参数和使用例子 附正则使用说明 ...

    服务器之家3102019-10-08
  • NginxNginx location 和 proxy_pass路径配置问题小结

    Nginx location 和 proxy_pass路径配置问题小结

    本文是基于 location 的匹配末尾是否配置 / 和 proxy_pass 末尾是否配置 / ,进行测试,完全还原了整个测试过程,本文给大家介绍Nginx location 基本配置及相关配...

    自由早晚乱余生18742021-09-24
  • Nginx利用nginx和腾讯云免费证书制作https的方法

    利用nginx和腾讯云免费证书制作https的方法

    这篇文章主要介绍了利用nginx和腾讯云免费证书制作https的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 ...

    dalaoyang5992019-12-30
  • Nginxnginx ssl免密码重启教程详解

    nginx ssl免密码重启教程详解

    这篇文章给大家介绍了nginx 如何启动以及nginx ssl 免密码重启 的方法,非常不错,具有参考借鉴价值,需要的朋友参考下吧 ...

    mrr4272019-11-19
  • Nginx如何优化Nginx的处理性能

    如何优化Nginx的处理性能

    Nginx是一个很强大的高性能Web和反向代理服务,它具有很多非常优越的特性,在连接高并发的情况下,Nginx是Apache服务不错的替代品。其特点是占有内存少,...

    Dockone.io5142020-12-11
  • NginxNginx动静分离实现案例代码解析

    Nginx动静分离实现案例代码解析

    这篇文章主要介绍了Nginx动静分离实现案例代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参...

    盗哥泡茶去了3382020-09-27
  • NginxNginx Rewrite使用场景及代码案例详解

    Nginx Rewrite使用场景及代码案例详解

    这篇文章主要介绍了Nginx Rewrite使用场景及代码案例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可...

    盗哥泡茶去了11862020-09-27