zl程序教程

您现在的位置是:首页 >  工具

当前栏目

Nginx

2023-09-11 14:19:18 时间

nginx 是什么? 

nginx 安装 ---linux 

安装

#  yum install nginx

查看所在位置

# whereis nginx 

默认位置存在于: /etc/nginx

启动

# systemctl  start nginx.service

关闭

# systemctl stop nginx.service

查看状态

# systemctl status nginx.service

热部署:不停机更新配置

# nginx -s  reload

检查nginx配置文件

#nginx -t

查看进程

#  ps -ef | grep nginx

查看运行中的端口

# netstart -tunlp

查看运行服务所在目录 proc目录下是所有运行服务以对应PID命名的文件夹

cd  /proc

找到对应的PID文件夹 cd命令进入

 cwd 则是对应的服务所在文件夹

nginx 配置文件 nginx.conf

主要分为三块

全局块,主要定义nginx全局运行参数

# 从开始到events

# 主要配置,工作进程,默认为1,建议无需要不修改,需要修改则根据服务器的CPU核心数配置

worker_processes 1; 

events 块

events{

        # 单个工作进程可以允许同时建立外部连接的数量数字越大,能同时处理的连接越多

        worker_connections 1024; 

        #设置指标,一:内存,二::操作系统级别的“进程最大可打开文件数”。
}

http块:又分为 全局块和server块(实际使用中修改最多的位置)

http{

        所有内容

}

http块---全局块

server块以外的内容

例如:

include       mime.types;

        server_names_hash_bucket_size 512;
        client_header_buffer_size 32k;
        large_client_header_buffers 4 32k;
        client_max_body_size 50m;

        sendfile   on;
        tcp_nopush on;

        keepalive_timeout 60;

        tcp_nodelay on;

        fastcgi_connect_timeout 300;
        fastcgi_send_timeout 300;
        fastcgi_temp_file_write_size 256k;
    fastcgi_intercept_errors on;

        gzip on;
        gzip_min_length  1k;
        gzip_buffers     4 16k;
        gzip_http_version 1.1;

        limit_conn_zone $binary_remote_addr zone=perip:10m;
    limit_conn_zone $server_name zone=perserver:10m;

        server_tokens off;
        access_log off;

http块---server块

server{

          listen 80;
          server_name loclhost;
          location  ~ / {
                proxy_pass http://127.0.0.1:8082;
          }
}

又分为server 全局块和 location 块

全局快主要配置监听、服务名称、访问的文件夹、ssl等

location 主要用于转发、代理
       

http反向代理

常规配置

server{

          listen 80;
          server_name www.123.com;
          location  / {
                proxy_pass http://www.baidu.com:8082;
          }
}

请求链接携带/test转发:www.123.com/test  --->    http://www.baidu.com:8082/test;

server{

          listen 80;
          server_name www.123.com;
          location  /test {
                proxy_pass http://www.baidu.com:8082;
          }
}

请求链接携带 /test/ 转发:

www.123.com/test/abdc/123.do  --->    http://www.baidu.com:8082/abdc/123.do;

server{

          listen 80;
          server_name www.123.com;
          location  /test/ {
                proxy_pass http://www.baidu.com:8082;
          }
}

注意 location中匹配设置

http负载均衡

http块全局块中定义

upstream  myserver{

       server  127.0.0.1:8081;

        server 127.0.0.1:8082;

}

负载方式有三种:

1 轮询:默认,请求均衡的分布在对应的服务上

2 配置权重:权重数值越大访问次数越多

server中配置 :server: 127.0.0.1:8081 weight =1;

3:ip_hash:每个用户固定访问一个服务,解决session共享问题

直接在upstream中配置

upstream  myserver{

        ip_hash;

       server  127.0.0.1:8081;

        server 127.0.0.1:8082;

}

4:fair : 根据服务器的响应时间来处理负载,响应越快分配的越多

直接在upstream中配置

upstream  myserver{

       server  127.0.0.1:8081;

        server 127.0.0.1:8082;

        fair;

}

server{

          listen 80;
          server_name www.123.com;
          location  ~ / {
                proxy_pass myserver;
          }
}

静态访问配置

server{

          listen 80;
          server_name www.123.com;
          location  ~ / {
                proxy_pass http://myserver;
          }

        # 访问静态文件:http://localhost/static/index.js

         location   /static {
                root /opt/project/upload/;
          }

        # 访问静态文件:http://localhost/image/123.png

         location   /image {

                root /opt/project/image/;
          }
}

location中 配置alias和root

alias:主要配置在location 中,路径要以   /  结束,root则不用,

root 可以配置在全局块中定义

路径区别

root是:root路径+location路径

alias是:使用alias路径替换location路径

location中的 autoindex  on;

如果配置了在访问的时候会把对应文件夹下所有文件及文件夹以列表的形式展示出来

配置无后缀下载:

location /apple-app-site-association {
     root /etc/nginx/files/;
} 
files下存放apple-app-site-association同名文件,PC端访问异常,APP移动终端可下载

java  配合 nginx 获取IP

 location 中配置

         proxy_pass http://localhost:8080/;
         #设置请求头,获取客户端IP地址 ,X-Real-IP
        proxy_set_header Host $host; 
        proxy_set_header X-Real-IP $remote_addr; 
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 

java 代码:

getRequest().getHeaders().getFirst("X-Real-IP");

nginx 高可用 主从模式

使用:keepalived 工具进行配置

安装

#   yum install keepalived


配置文件在/etc/keepalived 下

keepalived.conf

! Configuration File for keepalived
# 全局块
global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL    # 核心配置
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state MASTER     # MASTER 主服务器  BACKUP 从服务器
    interface eth0   # 绑定网卡
    virtual_router_id 51  # 主备机参数值必须一致
    priority 100     # 主机大、从机小。优先级
    advert_int 1   # 发送心跳时间,默认是1秒一次
    authentication {  # 校验方式
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {   # 虚拟IP地址,可通过该配置进行服务访问
        192.168.200.16
        192.168.200.17
        192.168.200.18
    }
}

virtual_server 192.168.200.100 443 {
    delay_loop 6
    lb_algo rr
    lb_kind NAT
    persistence_timeout 50
    protocol TCP

    real_server 192.168.201.100 443 {
        weight 1
        SSL_GET {
            url {
              path /
              digest ff20ad2481f97b1754ef3e12ecd3a9cc
            }
            url {
              path /mrtg/
              digest 9b3a0c85a887a256d6939da88aabd8cd
            }
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }
}

virtual_server 10.10.10.2 1358 {
    delay_loop 6
    lb_algo rr
    lb_kind NAT
    persistence_timeout 50
    protocol TCP

    sorry_server 192.168.200.200 1358

    real_server 192.168.200.2 1358 {
        weight 1
        HTTP_GET {
            url {
              path /testurl/test.jsp
              digest 640205b7b0fc66c1ea91c463fac6334d
            }
            url {
              path /testurl2/test.jsp
              digest 640205b7b0fc66c1ea91c463fac6334d
            }
            url {
              path /testurl3/test.jsp
              digest 640205b7b0fc66c1ea91c463fac6334d
            }
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }

    real_server 192.168.200.3 1358 {
        weight 1
        HTTP_GET {
            url {
              path /testurl/test.jsp
              digest 640205b7b0fc66c1ea91c463fac6334c
            }
            url {
              path /testurl2/test.jsp
              digest 640205b7b0fc66c1ea91c463fac6334c
            }
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }
}

virtual_server 10.10.10.3 1358 {
    delay_loop 3
    lb_algo rr
    lb_kind NAT
    persistence_timeout 50
    protocol TCP

    real_server 192.168.200.4 1358 {
        weight 1
        HTTP_GET {
            url {
              path /testurl/test.jsp
              digest 640205b7b0fc66c1ea91c463fac6334d
            }
            url {
              path /testurl2/test.jsp
              digest 640205b7b0fc66c1ea91c463fac6334d
            }
            url {
              path /testurl3/test.jsp
              digest 640205b7b0fc66c1ea91c463fac6334d
            }
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }

    real_server 192.168.200.5 1358 {
        weight 1
        HTTP_GET {
            url {
              path /testurl/test.jsp
              digest 640205b7b0fc66c1ea91c463fac6334d
            }
            url {
              path /testurl2/test.jsp
              digest 640205b7b0fc66c1ea91c463fac6334d
            }
            url {
              path /testurl3/test.jsp
              digest 640205b7b0fc66c1ea91c463fac6334d
            }
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }
}