Nginx 之 配置实例

扩展:

#在http{}中添加

include vhost/*.conf;

作用:将多个server配置文件的信息单独存放,不过于集中在nginx.conf配置中,这样有用助于故障排查

一、反向代理

正向代理:代理服务器代替系统内部来访问外部网络的过程(系统访问外网)

反向代理:外部请求访问系统时通过代理服务器转发到内部服务器的过程(外网访问系统)

1、反向代理实例1

需求

使用nginx反向代理,访问www.test.com直接跳转到127.0.0.1:8080【tomcat主页】

准备

1)、安装tomcat

cd /usr/local/

#下载
wget https://mirrors.bfsu.edu.cn/apache/tomcat/tomcat-9/v9.0.40/bin/apache-tomcat-9.0.40.tar.gz

#解压
tar -zxvf apache-tomcat-9.0.40.tar.gz

#重命名
mv apache-tomcat-9.0.40 tomcat

2)、安装java

#查找java相关列表
yum -y list java*

#安装jdk
yum install java-1.8.0 -y

#查看版本
java -version

3)、启动tomcat

cd /usr/local/tomcat/bin/
./startup.sh

#查看日志
cd /usr/local/tomcat/logs/
tail -f catalina.out

4)、对外开放8080端口

#增加端口
firewall-cmd --add-port=8080/tcp --permanent

#重启防火墙服务
firewall-cmd --reload

#查看开放的端口号
firewall-cmd --list-all

5)、win下浏览器里访问tomcat页面

配置

1)、修改win本地host文件,将www.test.com 映射到192.168.157.10

#打开文件
C:\Windows\System32\drivers\etc\hosts

#hosts文件内增加
192.168.157.10 www.test.com

2)、配置nginx

vim /usr/local/nginx/conf/vhost/demo1.conf

server {
    listen       80;
    server_name  192.168.157.10;
    location / {
        root   html;
        proxy_pass http://127.0.0.1:8080;
        index  index.html index.htm;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}

#重启nginx服务,让配置生效
nginx -s reload

效果

2、反向代理实例2

需求

根据访问路径跳转到不同端口的服务中。nginx监听端口为9001,访问http://127.0.0.1:9100/aa 跳转到8080端口;访问http://127.0.0.1:9100/bb 跳转到8081端口

准备

1)、重复实例1 并把端口改为8081

vim /usr/local/tomcat8081/conf/server.xml

#更改的内容
<Connector port="8081" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

2)、创建测试页面

cd /usr/local/tomcat/webapps/
mkdir aa
vim index.html

#内容
<h1>8080</h1>


cd /usr/local/tomcat8081/webapps/
mkdir bb
vim index.html

#内容
<h1>8081</h1>

3)、开放9001、8080、8081端口号

#增加端口
firewall-cmd --add-port=9001/tcp --permanent
firewall-cmd --add-port=8081/tcp --permanen

#重启防火墙服务
firewall-cmd --reload

#查看开放的端口号
firewall-cmd --list-all

配置

vim /usr/local/nginx/conf/vhost/demo2.conf

server {
    listen       9001;
    server_name  192.168.157.10;
    location ~ /aa/ {
        proxy_pass http://127.0.0.1:8081;
    }
    location ~ /bb/ {
        proxy_pass http://127.0.0.1:8080;
    }
}

效果

扩展

location指令说明

语法:location [=|~|~*|^~] /uri/ {}

  • = 表示精确匹配
  • ^~ 表示uri以某个常规字符串开头,理解为匹配url路径即可
  • ~ 表示区分大小写的正则匹配
  • ~* 表示不区分大小写的正则匹配
  • / 通用匹配,任何请求都会匹配到

二、负载均衡

负载均衡:通过某些方式把请求均匀分发到多个节点上,使系统中每个节点能够均匀的处理请求负载

需求

在浏览器中输入一个地址,负载均衡效果,平均到8080和8081端口中

准备

1)、准备两台tomcat服务器,一台8080,一台8081。参考反向代理实例

2)、在两台tomcat--webapps目录中,创建名称为demo3文件夹和index.html页面用于测试

配置

vim /usr/local/nginx/conf/vhost/demo3.conf

upstream myserver{
    server 192.168.157.10:8080;
    server 192.168.157.10:8081;
}
server {
    listen       80;
    server_name  192.168.157.10;
    location / {
        proxy_pass http://myserver;
        root html;
        index index.html index.htm;
    }
}

效果

扩展

nginx分配服务器策略

1)、轮询【默认】

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除

2)、weight

指定轮询机率,weight和访问比率成正比,用于后端服务器性能不均的情况。权重越高分配的客户端越多。例:

upstream myserver{
    server 192.168.157.10:8080 weight=5;
    server 192.168.157.10:8081 weight=10;
}

3)、ip_hash

每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session问题。例:

upstream myserver{
    ip_hash;
    server 192.168.157.10:8080;
    server 192.168.157.10:8081;
}

4)、fair(第三方)

按后端服务器的响应时间来分配请求,响应时间短的优先分配。例:

upstream myserver{
    server 192.168.157.10:8080;
    server 192.168.157.10:8081;
    fair;
}

三、动静分离

动静分离:把动态资源和静态资源部署到不同的服务器上

准备

1)、创建静态资源

cd /var/www
mkdir html.demo4.ga
cd html.demo4.ga/
mkdir html
mkdir image
vim html/index.html

<h1>test html</h1>

在images里上传个图片

配置

为了防止80端口重复,我这里就用的域名。然后在win下的host里添加 192.168.157.10 html.demo4.ga

vim /usr/local/nginx/conf/vhost/demo4.conf

server {
    listen       80;
    server_name  html.demo4.ga;
    location /html/ {
        root /var/www/html.demo4.ga/;
        index index.html index.htm;
    }
    location /image/ {
        root /var/www/html.demo4.ga/;
        autoindex on;
    }
}

效果

四、配置高可用的集群

高可用:系统中部分节点失效时,其它节点能够接替它继续提供服务
集群:一个特定领域的软件部署在多台服务器上并作为一个整体提供一类服务

需求

主nginx挂掉后,备nginx开始提供服务,不影响访问

准备

1)、准备两台服务器(master10,master15)

2)、安装nginx、keepalived

 

#安装keepalived
yum install keepalived -y

#查看版本
rpm -q -a keepalived

#安装位置
/etc/keepalived/

配置

配置keepalived,这里只展示了一个主机的配置

vim /etc/keepalived/keepalived.conf

global_defs {
  notification_email {
    acassen@firewall.loc
    failover@firewall.loc
    sysadmin@firewall.loc
  }
  notification_email_from Alexandre.Cassen@firewall.loc
  smtp_server 192.168.157.10    #192.168.157.15
  smtp_connect_timeout 30
  router_id LVS_DEVEL #访问到主机
}
vrrp_script chk_http_port {
  script "/usr/local/src/nginx_check.sh"
  interval 2 # (检测脚本执行的间隔)
  weight 2  #权重
}
vrrp_instance VI_1 {
  state MASTER #备份 服务器上将 MASTER  改为 BACKUP
  interface ens33 #网卡
  virtual_router_id 51 #主、备机的 virtual_router_id  必须相同
  priority 120 #主、备机取不同的优先级,主机值较大,备份机值较小
  advert_int 1
  authentication {
    auth_type PASS
    auth_pass 1111
  }
  virtual _ipaddress {
    192.168.157.100 #虚拟地址
  }
}

检测nginx脚本

vim /usr/local/src/nginx_check.sh

#!/bin/bash
A=`ps -C nginx –no-header |wc -l`
if [ $A -eq 0 ];then
    /usr/local/nginx/sbin/nginx
    sleep 2
    if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
        killall keepalived
    fi
fi

启动nginx、keepalived

#启动nginx
nginx

#启动keepalived
systemctl start keepalived.service

效果

当master10停掉服务后也可以查看

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值