Nginx反向代理、负载均衡、动静分离的基本配置

一、常用命令

使用nginx操作命令前提条件,必须进入sbin目录
/usr/local/nginx/sbin

# 查看nginx版本号
./nginx -v

# 启动nginx
./nginx

# 关闭nginx
./nginx -s stop

# 重新加载nginx
./nginx -s reload

二、配置文件

nginx 配置文件的位置
/usr/local/nginx/conf/nginx.conf

nginx配置文件有三部分组成:全局、event、http

全局块 举例

# 这是Nginx服务器并发处理服务的关键配置
# work_processes 值越大,可以支持的并发处理量越多,但会受到硬件、软件等设备的制约
worker_processes  1;

events块 举例

# events块涉及的指令主要影响Nginx服务器与用户的网络连接
# 表示每个work_processes支持的最大连接数是1024
worker_connections  1024;

http块

  • http全局块:包括文件引入、MIME-TYPE定义、日志自定义、连接超时时间、单链接请求数上限等。
  • server块
listen       80;	# 监听的端口
server_name  localhost;	# 主机名称
location / {	# 匹配路径跳转
    root   html;
    index  index.html index.htm;
}

三、反向代理

准备工作:安装Jdk和Tomcat

启动Tomcat

./apache-tomcat-9.0.24/bin/startup.sh

查看日志文件

cd apache-tomcat-9.0.24/logs/
tail -f catalina.out

对外开放访问的端口

# 添加端口
firewall-cmd --add-port=8080/tcp --permanent
# 重启防火墙
firewall-cmd --reload
# 查看开放端口号
firewall-cmd --list-all

目标1:访问www.123.com反向代理到Tomca首页

  1. 修改hosts文件
    C:\Windows\System32\drivers\etc
# 映射ip和端口
192.168.25.104 www.123.com

这时访问http://www.123.com:8080可以访问到Tomcat首页
2. 修改nginx.conf

server {
    listen       80;
    server_name  192.168.25.104;	# 服务器的Ip地址

    #charset koi8-r;

    #access_log  logs/host.access.log  main;

    location / {
        root  html;
        proxy_pass  http://127.0.0.1:8080;	# 反向代理的Ip和端口
        index  index.html  index.htm;
    }

目标2:使用nginx反向代理,根据路径跳转到不同端口的服务中

  • 监听端口9001
  • 访问http://192.168.25.104:9001/edu/跳转到127.0.0.1:8080
  • 访问http://192.168.25.104:9001/vod/跳转到127.0.0.1:8081
  1. 修改8081Tomcat的server.xml并启动
vi server.xml
# 修改SHUTDOWN端口,8005改成8015
<Server port="8015" shutdown="SHUTDOWN">

# 修改访问端口,8080改成8081
<Connector port="8081" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
 
# 修改AJP端口,8009改成8019 
<Connector port="8019" protocol="AJP/1.3" redirectPort="8443" />
  1. 在两个Tomcat服务器中创建文件夹和测试页面
  2. 修改nginx.conf,添加一个server块
server {
    listen  9001;
    server_name  192.168.25.104;

    location ~ /edu/ {
		proxy_pass  http://127.0.0.1:8080;
    }

    location ~ /vod/ {
		proxy_pass  http://127.0.0.1:8081;
    }
}
  1. 重启nginx
cd /usr/local/nginx/sbin/
./nginx -s reload
  1. 测试
    浏览器输入以下两个地址均可正常访问
    http://192.168.25.104:9001/edu/edu.html
    http://192.168.25.104:9001/vod/vod.html

通配符解释

location [ = | ~ | ~* | ^~] uri {
}
  1. = 用于不含正则表达式的uri前,要求请求字符串与uri严格匹配
  2. ~ 用于uri包含正则表达式,并且区分大小写
  3. ~* 用于表示uri包含正则表达式,并且不区别大小写
  4. ^~ 用于不含正则表达式的uri前,要求Nginx服务器找到标识uri和请求字符串匹配度最高的location后,而不再使用location块中的正则uri和请求字符串做匹配

四、负载均衡

目标:浏览器输入地址http://192.168.25.104/balance/test.html,实现负载均衡效果,即平均分配到8080和8081中

准备工作:在8080和8081两台Tomcat中创建目录balance,页面test.html

修改配置文件nginx.conf

http {
    upstream myserver{
        server  192.168.25.104:8080;
        server  192.168.25.104:8081;
    }

    server {
        listen       80;
        server_name  192.168.25.104;

        location / {
            root  html;
            proxy_pass  http://myserver;
            index  index.html  index.htm;
        }
    }
}

重启nginx后测试
浏览器输入http://192.168.25.104/balance/test.html
返回结果1:
在这里插入图片描述
返回结果2:
在这里插入图片描述
负载均衡分配策略

  1. 轮询(默认)
  2. weight 权重,默认为1,权重越高被分配的客户端越多
upstream myserver{
    server  192.168.25.104:8080 weight=5;
    server  192.168.25.104:8081 weight=1;
}
  1. ip_hash 每个请求访问的Ip的hash结果分配,每个访客固定访问一个后端服务器,解决session问题
upstream myserver{
	ip_hash;
    server  192.168.25.104:8080;
    server  192.168.25.104:8081;
}
  1. fair(第三方) 按后端服务器响应时间来分配请求,响应时间短的优先分配
upstream myserver{
    server  192.168.25.104:8080;
    server  192.168.25.104:8081;
	fair;
}

五、动静分离

准备工作:新建 /static/www/static/img,并放一些静态页面和图片。

修改配置文件 nginx.conf

server {
    listen       80;
    server_name  192.168.25.104;

    location /www/ {
        root  /static/;
        index  index.html  index.htm;
    }

    location /img/ {
        root  /static/;
        autoindex on;	# 列出文件的目录
    }
}

重启nginx开始测试
浏览器输入http://192.168.25.104/img/1.jpg可以正常访问

发布了71 篇原创文章 · 获赞 12 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_42103026/article/details/104058522
今日推荐