Nginx反向代理
Nginx的定位:主要用于做反向代理,一般都是用它来做前端页面的服务器,动态资源代理到后端服务器。这样做的好处是可以避免跨域请求带来的不便。
使用Nginx主要是对Nginx中的nginx.conf文件进行配置:
虚拟主机配置
server {
listen 7777#端口号,不能被占用;
server_name localhost#如果是本机就可以用localhost,如果不是则使用ip地址;
location /{
root F:\demo\dist;#代理的项目文件,如dist文件地址
index index.html#项目中的主页html地址;
}
}
反向代理配置
#以/demo/开始的请求会被代理到指定的服务器访问,如后端端口号
location /demo/ {
proxy_pass http://localhost:8080/;
}
负载均衡配置
upstream demoServer {
server localhost:8080;
server localhost:9090;
}
location /demo/ {
proxy_pass http://demoServer/;
}
-
负载均衡—轮询
upstream demoServer { server localhost:8080; server localhost:9090; }
-
负载均衡—权重
upstream demoServer { server localhost:8080 weight=2; #权重越大,被分配处理的请求越多 server localhost:9090 weight=1; }
-
负载均衡—ip_hash
ip_hash就是通过请求的ip地址,使用hash算法,算出来应该访问那一台服务器,如果是ip地址没变,那么这个请求的服务器 就永远都不会变
upstream demoServer { ip_hash; # 负载均衡规则 server localhost:8080; server localhost:9090; }
前后端web项目CentOs部署
使用工具:Xftp 7,Xshell 7,7-Zip
前端部署:
-
前端项目,使用yarn build 命令打包成dist文件
-
使用Xftp7连接上服务器后,使用7-Zip工具将dist文件打包成.tar压缩包,再压缩一遍压缩为.tar.gz,然后再Xftp7中拖入/usr/local目录中。
-
使用命令解压
tar zxvf dist.tar.gz -C /var/www/html #这里的-C表示指定位置解压,/var/www/html是解压的地址,也可以是其他位置,这个位置后续在Nginx的配置中要用到
-
在Nginx中配置nginx.conf文件,一般在nginx目录下的/conf中
cd /usr/nginx/conf vi nginx.conf #进入目录后进行修改
-
在上文中介绍了如何配置Nginx,如果只有一台服务器只需要配置虚拟主机和反向代理
server {
listen 7777#端口号,不能被占用;
server_name 1.1.1.1#如果是本机就可以用localhost,如果不是则使用ip地址;
location /{
root var/www/hrml/dist;#代理的项目文件,如dist文件地址
index index.html#项目中的主页html地址;
}
}
#以/demo/开始的请求会被代理到指定的服务器访问,如后端端口号
location /demo/ {
proxy_pass http://localhost:8080/;
}
然后启动niginx:
./usr/local/nginx/sbin/nginx #启动nginx
ps aux | grep nginx #查看nginx进程
后端部署:
- Java项目是以jar包的形式运行,因此使用Xhtp 7 工具将jar包拖进Linux系统中,如/usr/local
- 使用命令运行:
cd /usr/local
java -jar demo.jar
- 也可以后台运行:
nohup java -jar demo.jar > output.log 2>&1 &
其中output.log表示系统运行时的标准输出和错误文件,系统会自动创建该文件,并将输出和错误重定向到该文件。
-
查看端口号是否运行,使用lsof命令,如果没有安装就先进行安装:
yum install lsof
-
然后查看端口进程:
lsof -i :8080
-
开放你的网站访问端口和后端代理端口,并重置防火墙以生效:
-
firewall-cmd --zone=public --add-port=7777/tcp --permanent firewall-cmd --zone=public --add-port=8080/tcp --permanent firewall-cmd --reload