初学nginx

一、相关概念

1、nginx

一个高性能的HTTP和反向代理服务器,特点是内存少、并发能力强;能支持高达50000个并发连接数。常用于正/反向代理、负载均衡、动静分离。

2、反向代理

正向代理:客户端配置代理服务器,通过代理服务器进行互联网访问。
image
反向代理:客户端无需做配置,只需要将请求发送给反向代理服务器,由反向代理服务转发到目标服务器。暴露的是反向代理服务器地址,隐藏了目标服务器IP地址。
image

3、负载均衡

单个服务器解决不了高并发量请求,可以增加服务器数量,然后将请求分发到各个服务器上(负载分发到不同的服务器)。
image

4、动静分离

为了加快网站的解析速度,把静态资源(HTML/CSS/JS)和动态资源(JSP、Serlet)分开部署到专门的服务器上,由不同的服务器去解析对应的资源,降低单台服务器的压力。
image

二、Linux下安装nginx

1、安装

https://www.cnblogs.com/boonya/p/7907999.html

2、nginx常用命令

在/user/local/nginx/sbin下输入命令
1、查看版本号:./nginx-v
2、查看进程:ps -ef|grep nginx
3、启动:./nginx
4、停止:./nginx -s stop
5、重启:./nginx -s reload

3、常用命令补充

1、查看开放的端口:firewall-cmd --list-all
2、添加对外开放的端口:firewall-cmd --add-port=8080/tcp --permanent
3、重启防火墙:firewall-cmd --reload

三、nginx配置文件

/usr/local/nginx/conf下的 nginx.conf

#user  nobody;
worker_processes  1;
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#pid        logs/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    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"';
    #access_log  logs/access.log  main;
    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {

        listen       80;
        #server_name  localhost;
                #测试代理 一个域名 www.billsys.com
                server_name  www.smbms.com;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
                        #测试代理 本地
                        proxy_pass http://127.0.0.1:8080;
            root   html;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}
...........................................等

第一部分:全局块

从配置文件开始到events块之间的内容,主要设置一些影响nginx服务器整体运行的配置指令。
比如:worker_processes 1; --代表支持的并发处理量

第二部分:events块

涉及的指令主要影响nginx服务器与用户的网络连接
比如: worker_connections 1024; --支持最大的连接数

第三部分:http块

最常用的配置,代理、缓存和日志定义等大多数功能和第三方模块的配置。http块也包括http全局块、server块。

1、http全局块

配置的指令包括文件引入、MIME-TYPE定义、日志自定义、连接超时时间、单链接请求数上限等。

2、server全局块

和虚拟主机有密切关系,最常见的配置是本虚拟机主机的监听配置和本虚拟机主机的名称或IP配置。每个http块可以包含多个server块,而每个server块就相当于一个虚拟主机;每个server块也分为全局server块,以及可以同时包含多个location块。

3、location块

基于nginx服务器接收到的请求字符串,对虚拟主机名称/IP别名之外的字符串进行匹配,对特定的请求进行处理;地址定向、数据缓存和应答控制等功能,还有许多第三方模块的配置。

四、nginx配置实例

1、反向代理

1、安装一个tomcat,启动后测试访问
2、在nginx进行请求转发的配置
image
3、浏览器访问域名 www.testNginxTomcat.com 映射到nginx的ip地址,再反向代理至tomcat启动页面地址
image
4、location匹配规则参考
https://www.cnblogs.com/nishiwoerzi/articles/16337169.html
https://blog.csdn.net/shuxiaohua/article/details/124560311
注意location的匹配影响到代理地址的写法
报错:
image
5、配置location根据url反向代理不同的服务
image

2、负载均衡

1、固定访问的ip地址路径,轮询(默认)请求到多台服务器。
配置如下:
image
image
2、nginx分配服务器策略
①轮询(默认):按照时间顺序逐一分配,如果服务器down掉,能自动剔除。
②weight:代表权重,默认为1,权重越高被分配的客户端越多。
image
③ip_hash:每个请求按访问的ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session问题
image
④fair:按照服务器响应时间来分配,响应时间短优先分配。
image

3、动静分离

image
image
静态资源存放目录
image
配置:
image
配置了autoindex on的效果
image

4、高可用

1、问题:nginx宕机

image

2、高可用(主从模式)

当主服务器挂掉,自动切换到备服务器
keepalived软件:类似于路由,通过脚本检测当前服务器是否可用,
image

3、准备工作

<1>准备2台服务器,分别安装nginx
<2>在2台服务器上安装keepalived
yum命令安装:yum install keepalived -y
查询安转的软件:rpm -q -a keepalived
默认安转的位置:cd /etc/keepalived/ 配置文件:keepalived.conf

4、高可用配置(主从配置)

主要是修改keepalived.conf的配置
主:https://blog.csdn.net/chuanchengdabing/article/details/119727185
辅:https://blog.csdn.net/m0_38004228/article/details/128338177
state MASTER # 主机 BACKUP # 从机
image
image

5、配置说明

网卡需根据服务器的进行修改;主从服务器的priority优先级不同,主大从小
https://blog.csdn.net/kang50055/article/details/124436702
第一部分:global_defs{} - 全局配置
router_id 为服务器的name 通过这个能访问到主机
第二部分:vrrp_script check_nginx{} - 检测脚本配置
第三部分:vrrp_instance VI_1{} -配置虚拟路由器

6、测试

启动nginx
启动keepalived:systemctl start keepalived.service
查看进程:ps -ef|grep keepalived
访问虚拟ip,访问的是主服务器,将主服务器的nginx停止后,访问的是从服务器

五、nginx的原理解析

1、master与worker进程:nginx工作流程

master是管理者,worker是实际工作者,worker根据争抢的方获取客户端的任务。
image
image

2、一个master和多个worker的好处

<1>可以使用nginx -s reload热部署,利用nginx进行热部署操作;master进程(热部署修改了东西)重新加载不影响正在工作的worker进程;未工作的worker进程重新加载,有新的任务进来时,重新加载的worker进程进行争抢,未重新加载的正在工作的worker进程不进程争抢,直到工作完成才重新进行加载该worker进程。
<2>每个worker是独立的进程,如果其中一个出现问题,其他worker继续进行争抢任务,实现请求过程不会造成服务中断。
image

3、设置多少worker数

worker数与服务器的cpu数相等是最合适的
image
image

4、连接数worker_connection

发送一个请求,占用worker2个或者4个连接数
image

posted @   dream_of_freedom  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示