• Nginx__基础入门篇


    目录:

    Nginx的优势

    HTTP协议详解

    Nginx部署-Yum

    Nginx配置文件

    Nginx编译参数

    Nginx基本配置

    Nginx日志Log

    Nginx WEB模块

    Nginx 访问限制

    Nginx 访问控制


    Nginx的优势

    Nginx (engine x) 是一个高性能的HTTP(解决C10k的问题)和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。

    1、作为Web服务器,Nginx处理静态文件、索引文件,自动索引的效率非常高。

    2、作为代理服务器,Nginx可以实现无缓存的反向代理加速,提高网站运行速度。

    3、作为负载均衡服务器,Nginx既可以在内部直接支持Rails和PHP,也可以支持HTTP代理服务器对外进行服务,同时还支持简单的容错和利用算法进行负载均衡。

    4、在性能方面,Nginx是专门为性能优化而开发的,实现上非常注重效率。它采用内核Poll模型,可以支持更多的并发连接,最大可以支持对5万个并发连接数的响应,而且只占用很低的内存资源。

    5、在稳定性方面,Nginx采取了分阶段资源分配技术,使得CPU与内存的占用率非常低。Nginx官方表示,Nginx保持1万个没有活动的连接,而这些连接只占用2.5MB内存,因此,类似DOS这样的攻击对Nginx来说基本上是没有任何作用的。

    6、在高可用性方面,Nginx支持热部署,启动速度特别迅速,因此可以在不间断服务的情况下,对软件版本或者配置进行升级,即使运行数月也无需重新启动,几乎可以做到7x24小时不间断地运行。

    总之就是{

                    高并发

                    IO多路复用

                    epoll

                    异步

                    非阻塞

                    }

    HTTP协议详解

    HTTP--Hyper Text Transfer Protocol,超文本传输协议,是一种建立在TCP上的无状态连接,整个基本的工作流程是客户端发送一个HTTP请求,说明客户端想要访问的资源和请求的动作,服务端收到请求之后,服务端开始处理请求,并根据请求做出相应的动作访问服务器资源,最后通过发送HTTP响应把结果返回给客户端。其中一个请求的开始到一个响应的结束称为事务,当一个事物结束后还会在服务端添加一条日志条目。

    Nginx部署-Yum

    官方链接:http://www.nginx.org

    1.yum install yum-utils

    2.vim /etc/yum.repos.d/nginx.repo

    3./etc/yum.repos.d/nginx.repo

    [nginx-stable]
    name=nginx stable repo
    baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
    gpgcheck=1
    enabled=1
    gpgkey=https://nginx.org/keys/nginx_signing.key
    module_hotfixes=true
    
    [nginx-mainline]
    name=nginx mainline repo
    baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
    gpgcheck=1
    enabled=0
    gpgkey=https://nginx.org/keys/nginx_signing.key
    module_hotfixes=true

    4.yum-config-manager --enable nginx-mainline

    5.yum -y install nginx

    6.systemctl start nginx

    7.systemctl enable nginx

    8.关闭防火墙systemctl  stop firewalld

       关闭SELinux  setenforce 0

    9.查看版本nginx -V

    10.浏览器进行测试

    Nginx配置文件

    查看所有配置文件    rpm  -ql  nginx

    常用的配置文件

    /usr/share/nginx/html/index.html     默认主页

    /var/log/nginx   日志文件夹

    /var/cache/nginx  缓存文件夹

    /etc/logrotate.d/nginx      日志轮转

    /etc/nginx/nginx.conf       总配置文件

    /etc/nginx/conf.d              子配置文件

    /etc/nginx/conf.d/default.conf     默认网站配置文件

    /usr/lib64/nginx      Nginx模块目录

    /etc/nginx/koi-utf                字符集,文件编码

    /etc/nginx/mime.types        文件关联程序

    /etc/nginx/modules             第三方模块

    /usr/lib/systemd/system/nginx-debug.servicenginx        调试程序启动脚本

    Nginx编译参数

    Nginx常用编译参数

    --prefix = /etc/nginx        安装路径

    --sbin-path=/usr/sbin/nginx        程序文件

    --modules-path=/usr/lib64/nginx/modules        模块路径

    --conf-path=/etc/nginx/nginx.conf        主配置文件

    --error-log-path=/var/log/nginx/error.log        错误日志

    --http-log-path=/var/log/nginx/access.log        访问日志

    --pid-path=/var/run/nginx.pid        程序ID

    --lock-path=/var/run/nginx.lock        锁路径,防止重复启动nginx

    --http-client-body-temp-path=/var/cache/nginx/client_temp        缓存

    --http-proxy-temp-path=/var/cache/nginx/proxy_temp        代理缓存

    --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp        php缓存

    --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp        python缓存

    --with-compat        启用动态模块兼容性

    --user=nginx        用户

    --group=nginx        组

    --with-http_auth_request_module        认证模块

    --with-http_dav_module        增加上传PUT,DELETE,MKCOL:创建集合,COPY和MOVE方法)默认情况下为关闭

    --with-http_flv_module        NGINX 添加MP4、FLV视频支持模块

    --with-http_gunzip_module        压缩模块

    --with-http_mp4_module        多媒体模块

    --with-http_random_index_module        nginx显示随机首页模块

    --with-http_realip_module        Nginx获取真实IP模块

    --with-http_secure_link_module        nginx安全下载模块

    --with-http_slice_module        nginx 中文文档

    --with-http_ssl_module        安全模块

    --with-http_stub_status_module        访问状态

    --with-http_sub_module        nginx替换网站响应内容

    --with-mail        邮件客户端

    cpu优化参数:{

                             --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -                        fexceptions -fstack-protector-strong --
                             param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' 
                             --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie' 

                             }

    Nginx基本配置

    Nginx配置文件地址:/etc/nginx/nginx.conf

    nginx主配置文件(通常为`nginx.conf`)是Nginx服务器的核心配置文件,包含了对服务器行为的整体定义。以下是nginx主配置文件的一般结构和常见指令:

    1. `user`: 定义nginx工作进程的运行用户和用户组。
    2. `worker_processes`: 指定nginx工作进程的数量,通常设置为CPU核心数的倍数。
    3. `error_log`: 设置错误日志的位置和级别。
    4. `pid`: 指定nginx工作进程的PID文件的位置。
    5. `events`: 配置nginx处理事件的模块和参数,例如`worker_connections`用于设置每个工作进程的最大连接数。
    6. `http`: 定义nginx处理HTTP请求的配置。
       - `include`: 引入其他配置文件。
       - `default_type`: 指定默认的MIME类型。
       - `log_format`: 配置访问日志格式。
       - `access_log`: 指定访问日志的位置和格式。
       - `sendfile`: 配置是否启用sendfile传输文件。
       - `keepalive_timeout`: 指定客户端连接的超时时间。
       - `gzip`: 配置响应数据的压缩方式。
       - `server`: 定义虚拟主机的配置。
         - `listen`: 指定监听的端口号和协议。
         - `server_name`: 指定虚拟主机的域名。
         - `location`: 定义请求URL路径的匹配规则和相应的处理逻辑。

    以上是nginx主配置文件的一般结构和一些常见指令。实际上,nginx的配置非常灵活,还可以使用许多其他指令和模块来满足具体的需求。你可以根据你的具体需求自定义和扩展nginx的主配置文件。

    虚拟主机配置文件地址:/etc/nginx/conf.d/~~~~~

    在Nginx中,虚拟主机的配置文件通常是在nginx主配置文件(`nginx.conf`)中的`http`块内通过`server`块进行定义的。每个虚拟主机都有单独的`server`块,用于指定特定域名或监听端口的配置。以下是一个示例:

    ```
    http {
      ...

      server {
        listen 80;
        server_name example.com;
        root /path/to/root;
        
        location / {
          # 该虚拟主机的处理逻辑
        }
      }

      server {
        listen 80;
        server_name subdomain.example.com;
        root /path/to/subdomain;
        
        location / {
          # 不同域名的虚拟主机可以有不同的处理逻辑
        }
      }

      ...
    }
    ```

    在上述示例中,定义了两个虚拟主机的配置。第一个虚拟主机使用`example.com`作为域名,监听80端口,并将请求的根目录设置为`/path/to/root`。第二个虚拟主机使用`subdomain.example.com`作为域名,也监听80端口,并将请求的根目录设置为`/path/to/subdomain`。

    每个虚拟主机的`server`块内可以使用`location`块来定义特定URL路径的处理逻辑。可以根据需要为每个虚拟主机指定不同的代理、缓存、重定向等动作。

    你可以根据实际需求在`http`块中添加更多的虚拟主机配置,以支持不同域名或监听端口的网站服务。同时,你也可以使用`include`指令来将虚拟主机的配置文件拆分成独立的文件,以提高配置文件的可读性和维护性。

    Nginx日志Log

    正确日志:access_log

    192.168.100.254 - - [17/Dec/2017:14:45:59 +0800] "GET /nginx-logo.png HTTP/1.1" 200 368 "http://192.168.100.10/" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:57.0) Gecko/20100101 Firefox/57.0" "-"

    • 某条日志记录含义

    • 192.远程主机IP

    • - - 用户

    • 【2017】时间

    • get获得,下载,还有post提交。

    • /nginx-logo.png 下载图片

    • http版本

    • 状态码 什么结果。对,还是错

    • 368 大小

    • 引用自哪个连接,主页http://192.168.100.10/

    • Mozilla 5.0浏览器的版本

    • Windows NT 客户端系统类型

    • -远程客户端主机地址 (请看注释)

    错误日志:error_log

    Nginx WEB模块

    连接状态

    随机主页

    替换模块

    文件读取

    文件压缩

    页面缓存

    防盗链

    Nginx 访问限制

    ngx_http_limit_req_module                请求频率限制

    ngx_http_limit_conn_module                连接频率限制

    Nginx 访问控制

  • 相关阅读:
    分享篇:最近在研究的AIGC内容
    sizeof类大小 + 程序内存空间理解 + const变量的生命周期实现
    如何在springboot项目中引入knife4j接口文档
    Java27岁啦——一次争执引起的Java内卷生涯
    leetcode面试题之二叉树
    Kubernetes学习笔记
    Java常规题技术分享
    【OpenCV】用数组给Mat图像赋值,单/双/三通道 Mat赋值
    第十一章 正则表达式 课后练习题
    使用python连接Linux服务器发送指定命令
  • 原文地址:https://blog.csdn.net/SongLiang02_/article/details/132677502