最近在研究Swift開發(fā)服務(wù)端逾柿,用的Vapor框架缀棍,遇到的問題和解決方法一一記錄下來。
在Linux下普通用戶默認(rèn)是不能監(jiān)聽1024以下的端口的机错,我平常的做法一般是兩個爬范。
- 通過iptables把80端口轉(zhuǎn)發(fā)到Vapor監(jiān)聽的端口
- 通過Nginx方向代理Vapor監(jiān)聽的端口
(如果是用騰訊云或阿里云的服務(wù)器請先查看服務(wù)器的安全組有沒有開放80端口)
通過iptables把80端口轉(zhuǎn)發(fā)到Vapor監(jiān)聽的端口
我用的是16.04版本,不同的版本可能有些許差異弱匪。
首先執(zhí)行以下命名青瀑,設(shè)置好轉(zhuǎn)發(fā)規(guī)則,8080為Vapor監(jiān)聽的端口萧诫。
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
然后安裝iptables-persistent
sudo apt-get install iptables-persistent
最后保存規(guī)則
sudo iptables-save
通過Nginx方向代理Vapor監(jiān)聽的端口
首先安裝Nginx斥难。
sudo apt-get update
sudo apt-get install nginx
安裝完后訪問80端口應(yīng)該能看到nginx的歡迎頁面。
nginx的默認(rèn)配置在/etc/nginx下帘饶,我們要做的就是修改/etc/nginx/nginx.conf文件哑诊。
sudo vi /etc/nginx/nginx.conf
把http段最后的
include /etc/nginx/sites-enabled/*;
注釋掉
#include /etc/nginx/sites-enabled/*;
然后在http段中增加以下內(nèi)容:
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監(jiān)聽的端口
最后重啟Nginx
sudo service nginx restart
通過以上兩種方法的任意一種都可以使Vapor能通過80端口訪問。