一、安装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穿透的服务?请在服务器控制台域名解析添加一条泛解析,这也是关键地方:

我自己配的时候就忘了,结果折腾了半天,气死了
本文介绍如何安装配置Nginx,并实现与frp的共存,通过实例演示了Nginx的多种配置技巧,包括负载均衡、静态文件目录配置及frp的详细配置方法。

5816

被折叠的 条评论
为什么被折叠?



