nginx实战

132 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路

一、安装

1.1 下载

下载地址 地址,本次下载的是nginx-1.20.1稳定版本,下载完毕后拖入服务器 /opt/文件夹里

1.2 安装必备的环境

  • gcc安装

    安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装

    yum -y install gcc gcc-c++ autoconf automake
    
  • zlib安装 PCRE pcre-devel 安装 OpenSSL 安装

    zlib 库提供了很多种压缩和解压缩的方式, nginx 使用 zlib 对 http 包的内容进行 gzip ,所以需要在 Centos上安装 zlib 库。

    yum -y install zlib zlib-devel openssl openssl-devel pcre-devel
    

1.3 nginx配置安装并启动

解压nginx

tar -zxvf nginx-1.20.1.tar.gz

进入ngnix目录,执行以下命令, 注意–prefix等号后面的一串为 /opt/nginx-1.20.1 nginx目录

cd /opt/nginx-1.20.1
./configure --prefix=/opt/nginx-1.20.1 --with-http_stub_status_module --with-http_ssl_module

安装命令

make && make install

查看nginx 版本

./sbin/nginx -v

常见nginx的log文件夹

mkdir logs

到此, nginx安装完成 启动nginx启动sbin目录下的nginx

启动nginx

./sbin/nginx

查看nginx进程,可以根据IP访问进行测试

ps -ef | grep nginx

二、常用命令

//启动nginx [root@iz2zedkdcntqh9bniwae18z sbin]# ./sbin/nginx//停止 [root@iz2zedkdcntqh9bniwae18z sbin]# ./sbin/nginx -s stop //重启[root@iz2zedkdcntqh9bniwae18z sbin]# ./sbin/nginx -s reload//查看配置文件知否正确[root@iz2zedkdcntqh9bniwae18z sbin]# ./sbin/nginx -t//详情 [root@iz2zedkdcntqh9bniwae18z sbin]# ps -ef | grep nginx

三、负载均衡

3.1 配置负载均衡

现在有4个机器分别为192.168.67.67,192.168.67.68,192.168.67.69,192.168.67.70,67机器上有个nginx,其他三个机器上装上tomcat,四个机器的tomcat

<%@ page session="true" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>    <body>        <h1>Welcome to 豆豆把VOB</h1>        <h3><%=session.getId() %></h3>        <h3><%=request.getLocalAddr() %>--<%=request.getLocalPort() %></h3>        <h3><%=request.getRemoteAddr() %></h3>    </body>

启动三个tocmat

/opt/apache-tomcat-8.5.70/bin/startup.sh

修改 /opt/nginx-1.20.1/conf,配置如下,添加了upstream项修改了location的数据

http {    include       mime.types;    default_type  application/octet-stream;    sendfile        on;    keepalive_timeout  65;	upstream amoqi{	     server 192.168.67.68:8080;	     server 192.168.67.69:8080;	     server 192.168.67.70:8080;		}    server {        listen       80;        server_name  localhost;        location / {	     proxy_pass http://amoqi;        }        error_page   500 502 503 504  /50x.html;        location = /50x.html {            root   html;        }    }}

重启nginx

./sbin/nginx -s reload

重复访问url http://192.168.67.67/ ,发现负载到不同的服务器上了

3.2 负载均衡策略

3.2.1 请求轮询

  • 依次转发给配置的服务器

3.2.2 增加权重

  • 使用服务器的权重,谁的权重越大,分发到的请求越多

    upstream amoqi{    server 192.168.67.68:8080 weight=2;    server 192.168.67.69:8080 weight=3;    server 192.168.67.70:8080 weight=1;}
    

3.2.3 最少连接数

  • 在连接负载最少的情况下,nginx会避免将过多的请求发放给繁忙的服务器,而将新的请求分发给不太繁忙的服务器,避免服务器过载

    upstream amoqi{	least_conn;    server 192.168.67.68:8080;    server 192.168.67.69:8080;    server 192.168.67.70:8080;}
    

3.2.4 IP hash

  • 确保来自同一客户端的请求将始终定向到同一服务器,除非服务器不可用

    upstream amoqi{	ip_hash;    server 192.168.67.68:8080;    server 192.168.67.69:8080;    server 192.168.67.70:8080;}
    

四、配置资源静态化

4.1 配置静态资源

在被转发的服务器上配置静态资源

<body>	<h1>Welcome to 豆豆把VOB</h1>	<h3><%=session.getId() %></h3>	<h3><%=request.getLocalAddr() %>--<%=request.getLocalPort() %></h3>	<h3><%=request.getRemoteAddr() %></h3>	<img src="/static/img/ms.jpg" height="200px"/></body>
## 在Nginx的html文件夹下创建/static/img文件夹,放入图片ms.jpg## 放入locationlocation ^~ /static/ {	root html;}

4.2 路径路由规则

location = / {精确匹配,必须是127.0.0.1/#规则A}location = /login {精确匹配,必须是127