• Nginx配置文件及Nginx服务优化


    目录

    一、Nginx的配置文件结构

    1、配置文件结构

    2、工作原理

    二、Nginx配置文件

    三、虚拟主机 

    1、基于域名的虚拟主机

    2、基于端口的虚拟主机

    3、基于IP的虚拟主机

    四、基于客户端的访问控制

    1、访问控制定义

    2、访问控制实现方法


    一、Nginx的配置文件结构

    1、配置文件结构

     例如:客户端去访问 http://www.kaixin.com

    ①通过三次握手完成TCP连接。然后基于HTTP协议进行传输

    ②nginx启动后会生成一个主进程master进行监听

    ③当master接收到访问的请求时会生成一个worker去干活

        1、worker 首先是先读取配置文件,此时在glonal环境下

        2、由于http协议走的是80端口。所以选择 http \ {} 80端口的模块

        3、根据location进行选择,假如我访问的是图片

    ④nginx会对图片进行压缩,发送到内存空间(内存空间可自行设置有效时间。在有效时间内客户再次访问,则会直接在内存空间进行调取)

    ④数据穿传输结束后通过4挥断开连接

    2、工作原理

    当nginx开启后会让主进程master来监监听,当有任务需要执行时,会生成worker来处理。是一个master进程和多个worker进程的模型。并且,master进程只负责管理worker进程。一般我们会把worker进程的个数设置为cpu核的个数。

    二、Nginx配置文件

    1、全局配置

    全局配置包括Nginx服务的运行者、进程数、运行用户.....

    1. #备份
    2. vim /usr/local/nginx/conf/nginx.conf
    3. #user nobody; #默认运行/管理用户
    4. worker_processes 1; #工作进程运行数量,可配置成服务器内核数*2,如
    5. ##果网站访问量不大,一般设为1
    6. #error_log logs/error.log; #错误日志文件路径/级别
    7. #error_log logs/error.log notice;
    8. #error_log logs/error.log info;
    9. #pid logs/nginx.pid; #pid文件位置

    2、I/O时间配置

    使用"events {}"用来指定Ngin进程的I/O的响应模型、每个进程的连接数等设置,此处表示为1024,开启use epoll可以提高性能

    1. events { #events:事件
    2. #use epoll; #epoll是一种抗高并发的参数之一
    3. worker_connections 1024; #每个进程最多处理的连接数量(socket) 65535(内核中的优化)
    4. }

    3、HTTP配置

    使用 "http {}"包扩访问日志、HTTP端口、网页目录、默认字符集、连接保持......

    大部分配置都放在server {} 里面sa

    1. http { #http协议的配置
    2. include mime.types; #文件扩展名与文件类型映射表
    3. default_type application/octet-stream; #默认文件类型
    4. #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' #日志格式
    5. 设置
    6. # '$status $body_bytes_sent "$http_referer" '
    7. # '"$http_user_agent" "$http_x_forwarded_for"';
    8. #access_log logs/access.log main; #访问日志位置
    9. sendfile on; ##支持文件发送(下载)
    10. #tcp_nopush on; #此项允许或禁止使用socket的TCP_CORK的选项
    11. (发送数据包前先缓存数据),此选项仅在使用
    12. sendfile的时候使用
    13. #keepalive_timeout 0; ##连接保持超时时间,单位:秒
    14. keepalive_timeout 65;
    15. #gzip on; #压缩模块 on 表示开启
    16. server { #web 服务相关的一些配置
    17. listen 80; #默认监听端口
    18. server_name localhost; #站点域名
    19. #charset koi8-r; #字符集支持(修改为中文)UTF-8
    20. #access_log logs/host.access.log main; #此web服务的主访问日志
    21. location / { #“/”根目录配置 (浏览器中,
    22. www.baidu.com/
    23. root html; #网站根目录的位置/usr/local/nginx/html
    24. (相对路径)
    25. index index.html index.htm; #支持的首页文件格式
    26. }
    27. #error_page 404 /404.html;
    28. # redirect server error pages to the static page /50x.html
    29. #
    30. error_page 500 502 503 504 /50x.html; #当发生错误的时候能够显示一个预定义的错误
    31. 页面
    32. location = /50x.html { #错误页面配置
    33. root html;
    34. }
    35. # proxy(代理) the PHP scripts to Apache listening on 127.0.0.1:80 #以下
    36. 是支持PHP及
    37. 跳转的配置
    38. #
    39. #location ~ \.php$ {
    40. # proxy_pass http://127.0.0.1;
    41. #}
    42. # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    43. #
    44. #location ~ \.php$ {
    45. # root html;
    46. # fastcgi_pass 127.0.0.1:9000;
    47. # fastcgi_index index.php;
    48. # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
    49. # include fastcgi_params;
    50. #}
    51. # deny access to .htaccess files, if Apache's document root
    52. # concurs with nginx's one
    53. #
    54. #location ~ /\.ht {
    55. # deny all;
    56. #}
    57. }
    58. # another virtual host using mix of IP-, name-, and port-based configuration
    59. #
    60. #server { ##虚拟主机的配置
    61. # listen 8000;
    62. # listen somename:8080;
    63. # server_name somename alias another.alias;
    64. # location / {
    65. # root html;
    66. # index index.html index.htm;
    67. # }
    68. #}
    69. # HTTPS server ##HTTPS的配置(SSL
    70. 加密)
    71. #
    72. #server {
    73. # listen 443 ssl;
    74. # server_name localhost;
    75. # ssl_certificate cert.pem;
    76. # ssl_certificate_key cert.key;
    77. # ssl_session_cache shared:SSL:1m;
    78. # ssl_session_timeout 5m;
    79. # ssl_ciphers HIGH:!aNULL:!MD5;
    80. # ssl_prefer_server_ciphers on;
    81. # location / {
    82. # root html;
    83. # index index.html index.htm;
    84. # }
    85. #}
    86. }

    三、虚拟主机 

    1、基于域名的虚拟主机

    ①添加域名指向同一个服务器实现不同域名可以访问不同的虚拟主机

    1. [root@zwb conf]# vim /etc/hosts
    2. 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
    3. ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
    4. 192.168.159.68 www.hao.com www.kan.com ####添加该映射

    ②准备网站的目录给测试首页 

    1. [root@zwb html]# mkdir -p /var/www/html/hao
    2. [root@zwb html]# mkdir -p /var/www/html/kan
    3. [root@zwb html]# echo "

      www.hao.com

      " >/var/www/html/hao/index.html
    4. [root@zwb html]# echo "

      www.kan.com

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

    ③修改配置文件

    1. cd /usr/local/nginx/conf
    2. [root@zwb conf]# vim nginx.conf
    3. #gzip on;
    4. server {
    5. listen 80;
    6. server_name www.hao.com ; #### server_name 改为www.hao.com
    7. charset utf-8; #####字符集改为utf-8
    8. access_log logs/hao.access.log; ######日志改为logs/hao.access.log
    9. location / {
    10. root /var/www/html/hao; ######路径修改为/var/www/html/hao
    11. index index.html index.htm;
    12. }
    13. error_page 500 502 503 504 /50x.html;
    14. location = /50x.html {
    15. root html;
    16. }
    17. }
    18. server {
    19. listen 80;
    20. server_name www.kan.com ; #### server_name 改为www.kan.com
    21. charset utf-8; #####字符集改为utf-8
    22. access_log logs/kan.access.log; ######日志改为logs/kan.access.log
    23. location / {
    24. root /var/www/html/kan; ######路径修改为/var/www/html/kan
    25. index index.html index.htm;
    26. }
    27. error_page 500 502 503 504 /50x.html;
    28. location = /50x.html {
    29. root html;
    30. }
    31. }

    ④重启Nginx服务

    [root@zwb conf]# systemctl restart nginx.service

    ⑤测试

    2、基于端口的虚拟主机

    ①创建8080端口的网页文件

    1. [root@zwb conf]# mkdir -p /var/www/html/hao80
    2. [root@zwb conf]# echo "

      www.ni80.com

      " >/var/www/html/hao80/index.html
    3. [root@zwb conf]# mkdir -p /var/www/html/hao8080
    4. [root@zwb conf]# echo "

      www.ni8080.com

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

    ②修改nginx.conf的配置文件server{}部分

    1. #gzip on;
    2. server {
    3. listen 192.168.159.68:8080;
    4. server_name www.hao.com;
    5. charset utf-8;
    6. access_log logs/hao8080.access.log main;
    7. location / {
    8. root /var/www/html/hao8080;
    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.159.68:80;
    18. server_name www.hao.com;
    19. charset utf-8;
    20. access_log logs/hao80.access.log main;
    21. location / {
    22. root /var/www/html/hao80;
    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. }

    解析:

    ③配置/etc/hosts文件

    echo "192.168.159.68 www.hao.com" >> /etc/hosts

     ④验证:

    3、基于IP的虚拟主机

    ①在/etc/hosts里面增加一条映射

    1. [root@zwb conf]# vim /etc/hosts
    2. 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
    3. ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
    4. 192.168.159.68 www.hao.com
    5. 192.168.159.88 www.hao.com

    ②新增一个临时网卡

    1. [root@zwb conf]# ifconfig ens33:0 192.168.159.88 netmask 255.255.255.0
    2. [root@zwb conf]# ifconfig
    3. ens33: flags=4163 mtu 1500
    4. inet 192.168.159.68 netmask 255.255.255.0 broadcast 192.168.159.255
    5. inet6 fe80::ce01:2f86:7a80:ce3c prefixlen 64 scopeid 0x20<link>
    6. ether 00:0c:29:66:d9:2f txqueuelen 1000 (Ethernet)
    7. RX packets 345048 bytes 463605917 (442.1 MiB)
    8. RX errors 0 dropped 0 overruns 0 frame 0
    9. TX packets 148162 bytes 10779217 (10.2 MiB)
    10. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
    11. ens33:0: flags=4163 mtu 1500
    12. inet 192.168.159.88 netmask 255.255.255.0 broadcast 192.168.159.255
    13. ether 00:0c:29:66:d9:2f txqueuelen 1000 (Ethernet)

    ③新增一个网页文件

    1. [root@zwb conf]# mkdir -p /var/www/html/hao100
    2. [root@zwb hao100]# echo "

      www.hao100.com

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

    ④修改nginx.conf的配置文件 server{}部分

    1. #gzip on;
    2. server {
    3. listen 192.168.159.88:80;
    4. server_name www.hao.com;
    5. charset utf-8;
    6. access_log logs/hao100.access.log main;
    7. location / {
    8. root /var/www/html/hao100;
    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.159.68:80;
    18. server_name www.hao.com;
    19. charset utf-8;
    20. access_log logs/hao80.access.log main;
    21. location / {
    22. root /var/www/html/hao80;
    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. }

    ⑤重启nginx服务

    [root@zwb conf]# systemctl restart nginx.service

    ⑥ 验证

    四、基于客户端的访问控制

    1、访问控制定义

    基于客户端的访问控制是通过客户端IP地址,决定是否允许对网页的访问。规则如下(设置黑白名单)

    ①deny IP/IP段:拒绝某个IP或者IP段的客户端访问

    ②allow IP/IP段:允许某个IP或者IP段的客户端访问

    2、访问控制实现方法

    ①修改主配置文件nginx。添加相应配置项

    1. [root@zwb ~]# cd /usr/local/nginx/conf/
    2. [root@zwb conf]# vim nginx.conf
    3. server {
    4. listen 80;
    5. server_name localhost;
    6. #charset koi8-r;
    7. #access_log logs/host.access.log main;
    8. location / {
    9. root html;
    10. index index.html index.htm;
    11. deny 192.168.159.10; #####拒绝192.168.159.10的IP地址访问
    12. allow all; #####允许所有通过
    13. }

    ②验证

    宿主机访问,允许访问

    IP地址为192.168.159.10的主机访问,拒绝访问

  • 相关阅读:
    VPN相关概念:VPN和VPS、SSR、加速器有什么区别?
    Java基础38 面向对象三大特征之多态
    AIDL的使用
    vue项目打包优化的方法
    c# aes加密解密私钥公钥通钥
    汇编原理学习记录:物理地址=段地址*16+偏移地址
    【读书笔记】《文案变现》——写出有效文案的四个黄金步骤
    能不能手写Vue响应式?前端面试进阶
    ffmpeg知识点整理
    C++宏的用法
  • 原文地址:https://blog.csdn.net/m0_62948770/article/details/126576086