最近在研究Swift开发服务端,用的Vapor框架,遇到的问题和解决方法一一记录下来。
在Linux下普通用户默认是不能监听1024以下的端口的,我平常的做法一般是两个。
- 通过iptables把80端口转发到Vapor监听的端口
- 通过Nginx方向代理Vapor监听的端口
(如果是用腾讯云或阿里云的服务器请先查看服务器的安全组有没有开放80端口)
通过iptables把80端口转发到Vapor监听的端口
我用的是16.04版本,不同的版本可能有些许差异。
首先执行以下命名,设置好转发规则,8080为Vapor监听的端口。
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
然后安装iptables-persistent
sudo apt-get install iptables-persistent
最后保存规则
sudo iptables-save
通过Nginx方向代理Vapor监听的端口
首先安装Nginx。
sudo apt-get update
sudo apt-get install nginx
安装完后访问80端口应该能看到nginx的欢迎页面。
nginx的默认配置在/etc/nginx下,我们要做的就是修改/etc/nginx/nginx.conf文件。
sudo vi /etc/nginx/nginx.conf
把http段最后的
include /etc/nginx/sites-enabled/*;
注释掉
#include /etc/nginx/sites-enabled/*;
然后在http段中增加以下内容:
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://localhost:8080;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
}
8080为Vapor监听的端口
最后重启Nginx
sudo service nginx restart
通过以上两种方法的任意一种都可以使Vapor能通过80端口访问。