同时配置Nginx(转发)和Frp(内网映射)
操作系统:ubuntu64 16.04
1.nginx 安装
基于apt的安装
sudo apt-get install nginx
安装好的文件位置:
/usr/sbin/nginx:主程序
/etc/nginx:存放配置文件
/usr/share/nginx:存放静态文件
/var/log/nginx:存放日志
其实从上面的根目录文件夹可以知道,Linux系统的配置文件一般放在/etc,日志一般放在/var/log,运行的程序一般放在/usr/sbin或者/usr/bin。Nginx的配置项所在目录,可以打开/etc/nginx/nginx.conf
然后通过这种方式安装的,会自动创建服务,会自动在/etc/init.d/nginx新建服务脚本,然后就可以使用sudo service nginx {start|stop|restart|reload|force-reload|status|configtest|rotate|upgrade}的命令启动。还有一个好处,创建好的文件由于放在/usr/sbin目录下,所以能直接在终端中使用nginx命令而无需指定路径。
2.Frps安装
frps.ini配置文件如下
/etc/frp/frps.ini;存放配置文件
/usr/sbin/frps;主程序[common]
bind_port = 7000
vhost_http_port = 8080
[nas]
type = http
custom_domains = nas.xmakers.cn
[ssh]
listen_port = 6000
frps开机自启动
我们使用Linux下常用的进程管理器supervisor来管理FRP服务。
安装supervisor。
sudo apt install supervisor
然后在/etc/supervisor/conf.d下新建一个配置文件frp.conf,输入以下内容。command放置frp软件的位置。[program:frp]
command = /usr/sbin/frps -c /etc/frp/frps.ini
autostart = true
3.frp做内网穿透,把内网的服务器开放到外网。
如果是http服务的话,80端口的做法是使用二级域名xxx做个A记录指一台没有nginx 之类的服务器IP,然后用浏览器打开xxx.example.com就打开了。其他端口是在frpc.ini里指定的,就加个端口号如xxx.example.com:1234就打开了,这种情况用于外网服务器已经有nginx在运行占用了80端口, 这时如果不想用端口号来打开,就要做三级域名解析,同时nginx做反向代理,把这个1234端口代理到80.
其实只要给 nginx 增加一个简单的配置,就可以将某个域名的流量转发给 frp 了,还可以通过泛解析来映射不同的网站。server {
listen 80;
server_name *.frp.example.com;
location / {
proxy_pass http://127.0.0.1:8081;
proxy_set_header Host $host:80;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_hide_header X-Powered-By;
}
}