Nginx
1.简介
使用Nginx主要原因——反向代理,性能高。
反向代理——类似中央调度,隐藏的服务端
正向代理——类似VPN,隐藏客户端
2.Nginx环境搭建
2.1下载
- 环境配置
yum -y install pcre-devel openssl openssl-devel gd-devel gcc gcc-c++
tar -zxvf nginx-1.22.0.tar.gz
cd nginx-1.22.0
./configure --prefix=/usr/local/soft/nginx
make
make install
- 启动nginx
- 方式一
cd nginx/sbin
ps -ef | grep nginx #查看当前nginx状态为是否启动
./nginx
- 方式二
/usr/lcoal/soft/nginx/sbin/nginx -c /usr/local/soft/nginx/conf/nginx.conf
#/usr/lcoal/soft/nginx为安装的路径
- 关闭nginx
3.Nginx配置文件说明
3.1Nginx配置
3.2Nginx主要应用
- 静态网站部署
- 负载均衡
- 静态代理
- 动静分离
- 虚拟主机
4.静态网站部署
- Nginx是一个HTTP的web服务器,可以讲服务器的静态文件(HTML、图片等)通过HTTP协议返回给浏览器客户端。
- 12-Nginx-部署静态Web服务器_哔哩哔哩_bilibili
5.Nginx负载均衡
5.1Nginx负载均衡
upstream 网址1 {
server 192.168.xxx.xxx:port01;
server 192.168.xxx.xxx:port02;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
location /ProjectName {
proxy_pass 网址1;
}
5.2Nginx负载均衡策略
- 轮询(默认)
- 与ip_hash类似,但是按照访问url的hash结果来分配请求,使得每个url定向到同一个后端服务器。
upstream 网址1 {
server 192.168.xxx.xxx:port01;
server 192.168.xxx.xxx:port02;
}
- 权重
upstream 网址1 {
server 192.168.xxx.xxx:port01 weight=3;
server 192.168.xxx.xxx:port02 weight=1;
}
- 最少连接数
upstream 网址1 {
least_conn;
server 192.168.xxx.xxx:port01;
server 192.168.xxx.xxx:port02;
}
- ip_hash
- 能解决session丢失问题,但是会导致服务器压力过大。
5.3负载均衡的其他几个配置问题
- 备份机
upstream 网址1 {
server 192.168.xxx.xxx:port01;
server 192.168.xxx.xxx:port02 backup;
}
- down状态
upstream 网址1 {
server 192.168.xxx.xxx:port01;
#down状态,不参与负载均衡
server 192.168.xxx.xxx:port02 down;
}
6.静态资源
- nginx更擅长于静态资源的处理,性能更好,效率更高。
6.1在nginx.conf的location中配置静态资源所在目录实现
location ~ .*/(css|js|img|images|image){
root /opt/static;
}
7.动静分离
7.1动静分离
- 如果是动态资源找tomcat,如果是静态资源找nginx
8.虚拟主机部署多城市
upstream beijing.myweb.com {
server 192.168.xxx.xxx:port01;
}
upstream tianjian.myweb.com {
server 192.168.xxx.xxx:port02;
}
upstream nanjing.myweb.com {
server 192.168.xxx.xxx:port03;
}
server {
listen 80;
server_name beijing.myweb.com;
location / {
proxy_pass http://beijing.myweb.com;
}
}
server {
listen 80;
server_name tianjing.myweb.com;
location / {
proxy_pass http://beijing.myweb.com;
}
}
server {
listen 80;
server_name nanjing.myweb.com;
location / {
proxy_pass http://beijing.myweb.com;
}
}