ubuntu1804配置nginx和frp

本文介绍如何安装配置Nginx,并实现与frp的共存,通过实例演示了Nginx的多种配置技巧,包括负载均衡、静态文件目录配置及frp的详细配置方法。

一、安装nginx


sudo -s # 切换至root用户,本身是root用户就不用执行这个命令了
apt-get install nginx
nginx -v # 查看安装成功的版本号
service nginx start # 启动nginx

附带一个命令,偶尔会用:

# 彻底卸载nginx
apt-get --purge autoremove nginx

以上命令执行过程中,安装完毕后启动可能出错,遇到80端口被占用问题,后面会细说

安装完毕后请记住以下几个路径:

/usr/sbin/nginx:主程序
/etc/nginx:存放配置文件
/usr/share/nginx:存放静态文件
/var/log/nginx:存放日志

推荐在

目录建立一个自定义配置目录,放我自己的配置文件 

目录取名叫 myconf

执行的命令如下

cd /etc/nginx
mkdir myconf

然后在/etc/nginx/nginx.conf中使用引入命令:include /etc/nginx/myconf/*.conf;即可。

需要注意的是这句命令应该放在:http{}  的花括号内。因为include的命令引入相当于被引入的所有代码写在nginx.conf中一样。

当然,你也可以不建立自己的配置文件目录,因为nginx提供了一个目录 conf.d,他里面 *.conf文件都会被自动引入,编辑nginx.conf的时候就能看出来了

你可以将就把自己的conf配置文件放conf.d里面

随便写俩配置文件试试,放myconf目录

admin.conf:

server{
    listen 80;
    server_name admin.525.life;
    location / {
        #....
        proxy_pass http://localhost:8881;
    }
    ##### other directive
}

www.conf:

server{
    listen 80;
    server_name www.525.life;
    location / {
        #....
        proxy_pass http://localhost:8880;
    }
    ##### other directive
}

global.conf

server{
  listen 80 default;
  server_name _;
  return 403;
}

最后一个conf可以 禁止IP直接访问80端口或者禁止非本站的域名绑定我们的IP,所以慎用。要用frp的话别弄这个配置

还有一种配置写法比较牛逼,放在这儿,可以解决负载均衡问题的

upstream ice {
        server 127.0.0.1:3000;

}
server {
        listen 80;
        server_name ice.qjnubk.club;
        location / {
        # 后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X_Nginx_Proxy true;
        proxy_pass http://ice;
        proxy_redirect off;
        }
}

upstream tms {
        server localhost:8001;
        server localhost:8002;

}
server {
        listen 8008;
        server_name localhost;
        location / {
        #root html
        #index index.html index.htm
        proxy_pass http://tms;
        }
}

下面是nginx配置多个静态文件目录的代码,参考使用,实用性很高

server {
        listen       8088;
    server_name 127.0.0.1 alias localhost;
    location / {
        #....
        proxy_pass http://localhost:8090;
    }
    
    location /upload {
      alias E:/ftp/upload;
      try_files $uri @tomcat;
      #try_files $uri /up/image/default.png @tomcat;
    }

    location /up/ {
      alias D:/ProgramFiles/tomcat-idea/webapps/ROOT/upload/;
    }
    
    location @tomcat{
      proxy_pass http://localhost:8090;
    }
    
     }

下面是自用配置m3u8静态目录:

server {
    listen       80;
	add_header Access-Control-Allow-Origin * always;
	add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
	add_header Access-Control-Allow-Headers 'token,DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
    server_name ftp.xx.press;
	location /{
			root F:\pywork\m3u8_download\m3u8;
			index index.html index.htm index.jsp;
		}
	error_page  400     /ErrorFiles/400.html;
	error_page  401    /ErrorFiles/401.html;
	error_page  403     /ErrorFiles/403.html;
	error_page  404     /ErrorFiles/404.html;
	error_page  500     /ErrorFiles/500.html;
	error_page  502     /ErrorFiles/502.html;
	error_page  503     /ErrorFiles/503.html;
	error_page  504     /ErrorFiles/504.html;
	error_page  510     /ErrorFiles/510.html;
}

 把里面的xx换自己的域名

nignx的默认http配置里推荐下面这几个

client_max_body_size 1024M; 上传文件大小限制

sendfile on; 设置为on表示启动高效传输文件的模式

keepalive_timeout 650;保持连接的时间,默认65s

注意事项:

1. @tomcat里面的配置 里面不支持alias,只能用 proxy_pass 去跳

二、安装frp并与nginx共存80端口的使用:

下载软件

下载软件:FRP Releases
支持多平台,需根据服务器系统和CPU架构选择下载。下载的包是同时包含服务器端和客户端软件的。下载速度可能会比较慢,请耐心等会。

这里命令以ubuntu1804下载安装frp当前 时间的最新版为例:

## 存放下载文件目录
cd /home/frp
## 下载
wget https://github.com/fatedier/frp/releases/download/v0.35.1/frp_0.35.1_linux_amd64.tar.gz

## 解压
tar zxf frp_0.35.1_linux_amd64.tar.gz

当然,如果下载太慢,可以考虑本地电脑挂v2vay然后下载好了再上传到linux服务器的,不用那么死脑筋

服务端配置

frps.ini是服务端的配置文件。
完整的配置说明可以参考:frps配置

这里贴一个简单的默认配置文件:

[common]
bind_port = 7000
vhost_http_port = 80
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin

以上配置如果不要nginx的情况,简单明了也行了。现在弄了nginx,推荐下面的配置法:

文件: frpsmy.ini

[common]
# 服务端监听端口
bind_port = 7000
# 搭建http web服务,监听的端口(例如:80,但由于80端口留给nginx,此处改为其它端口)
vhost_http_port = 7080

# 配置服务器管理看板
# 限定访问ip,如果不限制访问请设置为:0.0.0.0。
# 监听端口,管理员的登录名和密码
dashboard_addr = 0.0.0.0
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin

# 设置记录日志的文件
# 日志级别:trace, debug, info, warn, error,从低到高
# 日志最多保留的天数
log_file = /home/frp/log/stdout.log
log_level = info
log_max_days = 3

# 认证token,不想要可以不配
# token = token

# 如果设置subdomain_host,可以在客户端frpc中为http或https设置子域名,比如:test,这可以通过三级域名test.frp.abc.com访问客户端。
subdomain_host = frp.mudery.com

请注意,要去控制台把防火墙设置对应的几个端口,7000,7500,7080放出来

然后后台启动frps

nohup ./frps -c ./frpsmy.ini 

停止命令也简单,先ps看下进程id再kill掉就ok

然后进去访问frp服务的dashboard后台面板可以看到咱们的配置生效图

接着咱们再来配置一下nginx吧

cd /etc/nginx/myconf
vi frps.conf

把下面的配置信息粘贴进去

# 服务器端管理后台
server {
    listen 80; 
    server_name frp.mudery.com;

    location / { 
        proxy_pass http://127.0.0.1:7500;
        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;
    }   
}

# 代理http web
server {
    listen       80; 
    server_name  *.frp.mudery.com;

    location / { 
        proxy_pass http://127.0.0.1:7080;
        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;
    }   
}

# 如果启用SSL才把下面这段也粘贴进去,否则只粘贴上面的
server {
    listen 443 ssl;
    server_name *.frp.mudery.com;

    # ssl on; 
    ssl_certificate /etc/letsencrypt/live/frp.abc.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/frp.abc.com/privkey.pem;
    ssl_prefer_server_ciphers on;
    ssl_session_timeout 60m;

    location / {
        proxy_pass http://127.0.0.1:7080;
        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;
    }
}

然后可以启动或者重启nginx了,相关命令:

service nginx start
service nginx stop
service nginx status
service nginx restart

客户端配置

frpc.ini是客户端的配置文件。
完整的配置说明可以参考:frpc配置
例如我的配置内容:

[common]
server_addr = 120.37.180.94
server_port = 7000

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 7000

[web1]
type = http
local_port = 5000
custom_domains = xy.mudery.com

[web2]
type = http
local_port = 8080
custom_domains = odoo.mudery.com

这个配置配的是完整二级域名,下面展示一个配置三级域名访问的,相对来说更方便

[common]
server_addr = 120.37.180.94
server_port = 7000
# token = {服务端设置的token}

# 配置日志文件
# 日志级别:trace, debug, info, warn, error
log_file = ./frpc.log
log_level = info
log_max_days = 3

# 客户端管理配置
# admin_addr = 127.0.0.1
# admin_port = 7400
# admin_user = admin
# admin_pwd = admin

[ssh_win]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 3323

[ssh_ubuntu]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 3322

[web_home]
type = http
local_ip = 127.0.0.1
local_port = 80
subdomain = home

[web_vue]
type = http
local_ip = 127.0.0.1
local_port = 8080
subdomain = vue

[web_odoo]
type = http
local_ip = 127.0.0.1
local_port = 8079
subdomain = odoo

[web_flask]
type = http
local_ip = 127.0.0.1
local_port = 5000
subdomain = flask

启动frp客户端命令

frpc.exe -c frpcmy.ini

注意事项,三级域名访问不到frp穿透的服务?请在服务器控制台域名解析添加一条泛解析,这也是关键地方:

我自己配的时候就忘了,结果折腾了半天,气死了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值