Nginx的配置与使用

一、在Linux上安装环境

1 (1)gcc坏境
2  yum install gcc-c++
3 (2)PCRE,用于解析正则表达式
4  yum install -y pcre pcre-devel
5 (3)zlib压缩和解压缩依赖
6  yum install -y zlib zlib-devel
7 (4)SSL安全加密的套接字协议层,用于HTTP安全传输
8  yum install -y openssl openssl-devel

1.1、下载Nginx

http://nginx.org/en/download.html

 

 

 

 

1.2、上传安装文件到服务器

(1)创建文件夹:
mkdir -p /data0/nginx
(2)将压缩文件上传到/data0/nginx文件夹中
(3)解压缩文件
tar -zxvf nginx-1.20.2.tar.gz
(4)删除压缩包
rm -rf nginx-1.20.2.tar.gz 

1.3、安装Nginx

(1)进入安装目录
cd /data0/nginx/nginx-1.20.2
(2)执行./configure 配置命令
./configure --prefix=/data0/nginx/ --with-stream --with-http_stub_status_module --with-http_ssl_module
(3)安装nginx
make && make install

1.4、命令

检测 
/data0/nginx/sbin/nginx -t 
启动 
/data0/nginx/sbin/nginx 
停止 
/data0/nginx/sbin/nginx -s stop 
重载 
/data0/nginx/sbin/nginx -s reload

1.5、查看网页

nginx默认监听80端

 

 

启动 ./nginx
停止(立刻) ./nginx  -s stop
停止(等请求处理完) ./nginx -s quit
热部署启动 ./nginx -s reload
查看版本 ./nginx -v
测试配置文件 ./nginx -t

二、配置文件

#全局块
#默认nodody,所有用户都可以使用
#user  nobody;
#设置工作线程数,一般与cpu核数一致,才能发挥出cpu的性能
worker_processes  1;

events {
    #网络IO模型,默认是epoll,多路并发
    # use epoll
    
    #设置每个worker的最大连接数
    worker_connections  1024;
}

http {
    #引入文件
    include       mime.types;
    # 配置默认类型,如果不加此指令,默认值为text/plain。
    default_type  application/octet-stream;
    # 日志格式
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';
    #配置是否开启文件发送
    sendfile        on;
    #开启后文件达到一定数量才开始发送
    #tcp_nopush     on;
    
    # 配置连接超时时间
    keepalive_timeout  65;

    #是否开启文件压缩
    gzip  on;

    # 上游服务器设置
    upstream server_name {
        #负载均衡策略
        # 1、轮询 2、weight 3、ip_hash 4、fair 5、url_hash
        # 轮询(负载均衡默认)
        # weight(默认权重就是1)
        # ip_hash(用户的所有请求回落到一台服务器上,避免session共享问题)
        # fair(按后端服务器的响应时间来分配请求,响应时间短的优先分配)
        # url_hash(按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器)
        
        # 设备状态 server  address  [ parameters ]
        # down 表示当前设备停用(设备有问题不能直接删除,要设为down,因为ip_hash是根据总设备数来分配请求的,直接删除会导致前后请求不在同一台服务器上)
        # backup 备份。只有其他服务器全都停机,才会使用该服务
        # max_fails 允许服务处理请求时服务出错的次数,默认为1,设为0表示取消该检查
        # fail_timeout 表示连接超时时间。max_fails和fail_timeout一般组合使用。当服务处理请求发生错误的次数超过max_fails以后,nginx会暂时禁止将请求转发到这个服务。当过去fail_timeout设置的时间以后,nginx会尝试将请求转发到刚才被禁止的服务,如果服务正常,那么后续的请求可以继续转发到这台服务,如果服务错误,那么继续等待fail_timeout时间后再来检测。fail_timeout默认时间是10s。(开启,挂掉,在开启看会不会访问到这台服务器上)
        # slow_start 缓慢启动(这个功能存在于nginx商业版。当集群中错误服务等待fail_timeout时间后,nginx检测到这个服务能够正常使用后,再等待slow_start时间后,才正式使用这个服务。)
        
        # 其他配置
        #keepalive:限制空闲长连接的最大数量。
        #keepalive_timeout:空闲长连接的最长保持时间。
        #keepalive_requests:每个长连接最多可以处理的请求数。
        server 1.15.131.114:8080 ;
    }

    server {
        #监听的端口
        listen       80;
        #配置虚拟主机的名称
        server_name  localhost;
        # 编码
        #charset koi8-r;
        #访问日志
        #access_log  logs/host.access.log  main;

        location / {
            #root用于设置请求寻找资源的跟目录
            root   html;
            index  index.html index.htm;
        }
        # 错误跳转页面
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

三、静态资源

 

 

 配置nginx.conf

        location /img/ {
            root /home/resource/static/;
            #自动创建索引
            autoindex on;
        }

路径为/img会被匹配到,然后去服务器/home/resource/static/img/下找对应的图片。

 

 

 

root :路径完全匹配访问

location /img/ {
            root /home/resource/static/;
            #自动创建索引
            autoindex on;
        }

alias:给路径起别名

        location /img/ {
            alias /home/resource/static/img/;
            #自动创建索引
            autoindex on;
        }

3.2 location匹配规则

空格:默认匹配,普通匹配

 

location / {
     root /home;
}

=:精确匹配

location = /imooc/img/face1.png {
    root /home;
}

~*:匹配正则表达式,不区分大小写

#符合图片的显示
location ~* .(GIF|jpg|png|jpeg) {
    root /home;
}

~:匹配正则表达式,区分大小写

#GIF必须大写才能匹配到
location ~ .(GIF|jpg|png|jpeg) {
    root /home;
}

^~:以某个字符路径开头

location ^~ /imooc/img {
    root /home;
}

3.5 负载均衡

Nginx有4中负载均衡策略

1、轮询(默认)

一个接着一个分发请求

2、权重

根据权重分发请求

3、ip_hash

用户的请求会落到一台服务器上,解决了session共享问题

4、fair

根据服务器情况分发

准备-linux上部署两个tomcat

 

 

 

 

 

 配置Nginx.conf文件

 upstream myserver {
        server 1.15.131.114:8080 weight=1;
        server 1.15.131.114:8081 weight=2;
    }


    server {
        listen       80;
        server_name  myserver;

        location / {
            proxy_pass http://myserver;
        }
    }

http://1.15.131.114/page/index.html刷新几次,会出现8080和8081,负载均衡实现。

5、url_hash

根据方法做hash运算分发请求

准备:两个项目,相同接口,返回接口显示各自的端口号。

    @GetMapping("/rain")
    public String rain(){
        return "8088=>" + "少年听雨歌楼上,红烛昏罗帐。 \n壮年听雨客舟中, 江阔云低,断雁叫西风。 \n而今听雨僧庐下,鬓已星星也。 \n悲欢离合总无情,一任阶前,点滴到天明。";
    }

    @GetMapping("/miss")
    public String miss(){
        return "8088=>" + "一重山,两重山,\n" +
                "山远天高烟水寒,相思枫叶。\n" +
                "菊花开,菊花残,\n" +
                "塞雁高飞人未还,一帘风月闲。";
    }

Nginx配置

    upstream javaserver {
        # 一致性hash算法
        hash $request_uri consistent;
        server 1.15.131.114:8088;
        server 1.15.131.114:8089;
    }

    server {
        listen       90;
        server_name  javaserver;

        #允许跨域请求的域,*代表所有
        add_header 'Access-Control-Allow-Origin' *;
        #允许带上cookie请求
        add_header 'Access-Control-Allow-Credentials' 'true';
        #允许请求的方法,比如 GET/POST/PUT/DELETE
        add_header 'Access-Control-Allow-Methods' *;
        #允许请求的header
        add_header 'Access-Control-Allow-Headers' *;

        location / {
            proxy_pass http://javaserver;
        }
    }

访问页面

8089

 

 8088

 

posted @ 2022-05-23 16:33  林草莓  阅读(172)  评论(0编辑  收藏  举报