• Nginx网站服务


    目录

    什么是 Nginx

    Nginx并发连接

    Nginx 应用场景

    编译安装Nginx服务

    Nginx服务的主配置文件 nginx.conf

    Nginx访问控制

    Nginx虚拟主机

    基于域名的Nginx虚拟主机

     基于端口的虚拟主机

     基于IP的nginx虚拟主机


    什么是 Nginx

    一款高性能、轻量级Web服务软件

    • 稳定性高
    • 系统资源消耗低
    • 对HTTP并发连接的处理能力高(单台物理服务器可支持30 000~50 000个并发请求)

    Nginx并发连接

    NG并发连接能力受以下二个因素的影响:

    CPU个数

    本地物理服务器系统的最大文件打开数

    Nginx 应用场景

    • 静态服务器(图片,视频服务)
    • 动态服务
    • 反向代理,负载均衡
    • 缓存服务

    编译安装Nginx服务

    首先关闭防火墙

    1. systemctl stop firewalld
    2. systemctl disable firewalld
    3. setenforce 0

     

    将安装包上传到/opt目录下

    安装依赖环境包

    yum -y install pcre-devel zlib-devel gcc gcc-c++ make
    

     创建用户组

    useradd -M -s /sbin/nologin nginx
    

    解压软件包,然后配置软件的模块

    1. tar zxf nginx-1.15.9.tar.gz
    2. cd nginx-1.15.9/
    3. ./configure \
    4. > --prefix=/usr/local/nginx \
    5. > --user=nginx \
    6. > --group=nginx \
    7. > --with-http_stub_status_module

    编译安装

    make && make install
    

    优化配置文件路径,便于系统识别nginx的操作命令

    1. ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
    2. nginx -t ##检查配置文件是否配置正确

    添加nginx系统服务

    1. vim /lib/systemd/system/nginx.service
    2. [Unit]
    3. Description=nginx
    4. After=network.target
    5. [Service]
    6. Type=forking
    7. PIDFile=/usr/local/nginx/logs/nginx.pid
    8. ExecStart=/usr/local/nginx/sbin/nginx
    9. ExecrReload=/bin/kill -s HUP $MAINPID
    10. ExecrStop=/bin/kill -s QUIT $MAINPID
    11. PrivateTmp=true
    12. [Install]
    13. WantedBy=multi-user.target

    赋权,重启服务并且设置开机自启

    1. chmod 754 /lib/systemd/system/nginx.service
    2. systemctl start nginx.service
    3. systemctl enable nginx.service

    验证服务

    Nginx服务的主配置文件 nginx.conf

    (nginx.conf路径:/usr/local/nginx/conf/nginx.conf)

    全局配置

    1. #user nobody; #运行用户,若编译时未指定则默认为 nobody
    2. worker_processes 1; #工作进程数量,可配置成服务器内核数 * 2
    3. #error_log logs/error.log; #错误日志文件的位置
    4. #pid logs/nginx.pid; #PID 文件的位置

    I/O事件配置

    1. events {
    2. use epoll; #使用 epoll 模型,2.6及以上版本的系统内核,建议使用epoll模型以提高性能
    3. worker_connections 4096; #每个进程处理 4096 个连接
    4. }
    5. #如提高每个进程的连接数还需执行“ulimit -n 65535”命令临时修改本地每个进程可以同时打开的最大文件数。
    6. #在Linux平台上,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄)。
    7. #可使用ulimit -a命令查看系统允许当前用户进程打开的文件数限制.

    ulimt -a可以查看每个进程可处理的文件数量

    HTTP配置

    1. http {
    2. ##文件扩展名与文件类型映射表
    3. include mime.types;
    4. ##默认文件类型
    5. default_type application/octet-stream;
    6. ##日志格式设定
    7. #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
    8. # '$status $body_bytes_sent "$http_referer" '
    9. # '"$http_user_agent" "$http_x_forwarded_for"';
    10. ##访问日志位置
    11. #access_log logs/access.log main;
    12. ##支持文件发送(下载)
    13. sendfile on;
    14. ##此选项允许或禁止使用socke的TCP_CORK的选项(发送数据包前先缓存数据),此选项仅在使用sendfile的时候使用
    15. #tcp_nopush on;
    16. ##连接保持超时时间,单位是秒
    17. #keepalive_timeout 0;
    18. keepalive_timeout 65;
    19. ##gzip模块设置,设置是否开启gzip压缩输出
    20. #gzip on;
    21. ##Web 服务的监听配置
    22. server {
    23. ##监听地址及端口
    24. listen 80;
    25. ##站点域名,可以有多个,用空格隔开
    26. server_name www.lxx.com;
    27. ##网页的默认字符集
    28. charset utf-8;
    29. ##根目录配置
    30. location / {
    31. ##网站根目录的位置/usr/local/nginx/html
    32. root html;
    33. ##默认首页文件名
    34. index index.html index.htm;
    35. }
    36. ##内部错误的反馈页面
    37. error_page 500 502 503 504 /50x.html;
    38. ##错误页面配置
    39. location = /50x.html {
    40. root html;
    41. }
    42. }
    43. }

    日志格式设定

    1. $remote_addr$http_x_forwarded_for用以记录客户端的ip地址;
    2. $remote_user:用来记录客户端用户名称;
    3. $time_local: 用来记录访问时间与时区;
    4. $request: 用来记录请求的url与http协议;
    5. $status: 用来记录请求状态;成功是200
    6. $body_bytes_sent :记录发送给客户端文件主体内容大小;
    7. $http_referer:用来记录从那个页面链接访问过来的;
    8. $http_user_agent:记录客户浏览器的相关信息;
    9. 通常web服务器放在反向代理的后面,这样就不能获取到客户的IP地址了,通过$remote_add拿到的IP地址是反向代理服务器的iP地址。反向代理服务器在转发请求的http头信息中,可以增加x_forwarded_for信息,用以记录原有客户端的IP地址和原来客户端的请求的服务器地址。
    1. location常见配置指令,root、alias、proxy_pass
    2. root(根路径配置):请求www.lic.com/test,会返回文件/usr/local/nginx/html/test/index.html
    3. alias(别名配置):请求www.lic.com/test,会返回文件/usr/local/nginx/html/index.html

    Nginx访问控制

    基于客户端的访问控制
    1、访问控制规则如下
    deny IP/IP段:拒绝某个IP或IP段的客户端访问
    allow IP/IP段:允许某个IP或IP段的客户端的访问
    规则从上往下执行,如匹配则停止,不再往下匹配

    1. vim /usr/local/nginx/conf/nginx.conf
    2. location / {
    3. root html;
    4. index index.html index.htm;
    5. deny 192.168.200.112; #添加拒绝访问的客户端的IP
    6. allow all; #添加允许其他IP客户端访问
    7. }

    Nginx虚拟主机

    基于域名的Nginx虚拟主机

    添加域名解析

    1. echo "192.168.200.112 www.lxx.com www.faiz.com" >> /etc/hosts
    2. mkdir -p /var/www/html/lxx
    3. mkdir -p /var/www/html/faiz
    4. echo "

      www.lxx.com

      "
      >/var/www/html/lxx/index.html
    5. echo "

      www.faiz.com

      "
      >/var/www/html/faiz/index.html

    vim /usr/local/nginx/conf/nginx.conf

    测试

     

     基于端口的虚拟主机

    1. vim /usr/local/nginx/conf/nginx.conf
    2. server {
    3. listen 192.168.200.111:80;
    4. server_name www.faiz.com;
    5. charset utf-8;
    6. access_log logs/faiz.access.log;
    7. location / {
    8. root /var/www/html/faiz;
    9. index index.html index.htm;
    10. }
    11. error_page 500 502 503 504 /50x.html;
    12. location = /50x.html {
    13. root html;
    14. }
    15. }
    16. server {
    17. listen 192.168.200.111:8080;
    18. server_name www.joker.com;
    19. charset utf-8;
    20. access_log logs/joker.access.log;
    21. location / {
    22. root /var/www/html/joker;
    23. index index.html index.htm;
    24. }
    25. error_page 500 502 503 504 /50x.html;
    26. location = /50x.html {
    27. root html;
    28. }
    29. }

    测试

     

     基于IP的nginx虚拟主机

    vim /etc/hosts

     修改配置文件

    1. vim /usr/local/nginx/conf/nginx.conf
    2. server {
    3. listen 192.168.200.111;
    4. server_name www.faiz.com;
    5. charset utf-8;
    6. access_log logs/faiz.access.log;
    7. location / {
    8. root /var/www/html/faiz;
    9. index index.html index.htm;
    10. }
    11. error_page 500 502 503 504 /50x.html;
    12. location = /50x.html {
    13. root html;
    14. }
    15. }
    16. server {
    17. listen 192.168.200.122;
    18. server_name www.joker.com;
    19. charset utf-8;
    20. access_log logs/joker.access.log;
    21. location / {
    22. root /var/www/html/joker;
    23. index index.html index.htm;
    24. }
    25. error_page 500 502 503 504 /50x.html;
    26. location = /50x.html {
    27. root html;
    28. }
    29. }

    测试

     

     

  • 相关阅读:
    Java教程:二进制数组与十六进制字符串之间的相互转换
    yolov6训练自己的数据记录+yolov5对比测试
    Docker 安装oracle12c容器并创建新用户
    机械臂速成小指南(六):步进电机驱动器
    【Redis】聊一下Redis事务以及watch机制
    Django 数据迁移时 提示 No changes detected问题解决
    【微服务设计】第二篇 :演化式架构师
    YOLOv5 分类模型 数据集加载 1
    数据库MongoDB
    sql执行插入语句返回刚刚生成的自动编号
  • 原文地址:https://blog.csdn.net/qq_45905840/article/details/126526756