Mac下使用80端口访问web应用

写在前面

昨天有前端小伙伴问到,如何在自己的mac下,把jetty配置成80端口启动。在实际的web开发工作中,调试时可能经常会有这样的需求,例如tomcat、jetty、nodejs启动的服务,想通过80端口访问。其实在windows系统下,这些也不算问题,改一下配置就可以启动了, 但在Unix-like系统下,默认1024以下端口,只能用root权限使用。 所以使用mac的小伙伴,不会操作的可以继续往下看,使用Linux的,如果也不会操作,那你还玩什么Linux,趁早放弃吧!

root用户启动

这个方案比较简单,启动相关服务切换成root用户或用sudo的方案启动就可以,如果是eclipse里面的jetty插件,那eclipse也需要同样的操作。

这样带来的问题时,服务启动产生的临时文件也是root级别的,删除什么的会麻烦些,另外需要修改相关服务的端口配置,且每次都要这样。

nginx/apache

可以通过nginx/apache之类的代理去做域名/端口的转发,mac下默认安装apache,也可以自己安装nginx,简单给出nginx相关配置文件如下:

server {  
    listen       80;  
    server_name  xxx1.com.cn www.xxx1.com.cn;  

    location / {  
        proxy_pass  http://localhost:8091;  
        proxy_set_header Host $host;  
        proxy_set_header X-Real-IP $remote_addr;  
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
        root   html;  
        index  index.html index.htm;  
    }  
}  
server {  
    listen       80;  
    server_name  xxx2.com www.xxx2.com;  

    location / {  
        proxy_pass  http://localhost:7080;  
        proxy_set_header Host $host;  
        proxy_set_header X-Real-IP $remote_addr;  
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
        root   html;  
        index  index.html index.htm;  
    }  
}  

charles/whistle/fiddler

经常做移动端开发的,一般都了解web代理抓包的一些工具,可以url配置映射+本地Host的方案,实现域名/端口级的转发,这里不做过多介绍。

  • charles配置
  • whistle

pfctl/ipfw端口转发

这两个工具都是mac下的,10.10以前是ipfw,现在升级成了pfctl,当然Linux下也可以用iptables完成端口转发,这里也不介绍了,下面只介绍一下pfctl:

先对pf.conf进行备份:cp /etc/pf.conf /etc/pf.conf.normal.bak , 之后在该文件中以下行:

rdr-anchor "com.apple/*" 

后面添加一行配置,如下:

rdr on lo0 inet proto tcp from any to 127.0.0.1 port 80 -> 127.0.0.1 port 8080

注: lo0是本地环路127.0.0.1,如果希望内网其他同学也能访问到还要加下面的配置:

rdr on en0 inet proto tcp from any to 127.0.0.1 port 80 -> 127.0.0.1 port 8080

最后按顺序执行下面的命令,首次会要求输出密码

sudo pfctl -d
sudo pfctl -f /etc/pf.conf  
sudo pfctl -e  

当看到下面的提示后,表示端口转发配置成功,可以使用了

No ALTQ support in kernel
ALTQ related functions disabled
pf enabled

你可能感兴趣的:(Mac下使用80端口访问web应用)