Nginx基础配置

71 阅读6分钟
./configure --without-module1 --without-module2 --without-module3

// 例如
./configure --without-http_dav_module --withouthttp_spdy_module
  1. ./configure

    • 根据你的系统环境和选择的配置系统是否有编译Nginx所需的工具和库,并创建一个适合你的系统Makefile
  2. --without-module1 --without-module2 --without-module3

    • configure脚本参数,用于指定在构建Nginx时不需要包含那些模块。
    • module1module2module3表示需要禁用的Nginx模块。
  3. --without-http_dav_module --withouthttp_spdy_module

    • --without-http_dav_module在构建Nginx时不包含HTTPDAV模块,这个模块支持文件的编辑和管理。
    • --withouthttp_spdy_module禁用HTTPSPDY模块,SPDY是一个网络协议,用于减少网页加载时间,现在被HTTP/2取代。
worker_processes 8; 
// Nginx 进程数,建议按照CPU数目来指定,一般为它的倍数 (如,2个四核的CPU计为8)。

worker_rlimit_nofile 65535;  
//一个 Nginx 进程打开的最多文件描述符数目

worker_connections 65535; 
//每个进程允许的最多连接数
server {
  listen 80;                         // 监听端口        
  server_name www.mingongge.com;     // 域名信息        
  location / {            
    root   /www/www;                 // 网站根目录           
    index  index.html index.htm;     // 默认首页类型            
    deny 192.168.2.11;               // 禁止访问的ip地址,可以为all            
    allow 192.168.3.44// 允许访问的ip地址,可以为all        
  }        
}           

server一个服务器配置块开始。

配置Nginx状态页面

[root@proxy ~]# cat /usr/local/nginx/conf/nginx.conf
……
location /NginxStatus {
      stub_status           on;
      access_log            on;
      auth_basic            "NginxStatus";
      auth_basic_user_file  conf/htpasswd;
}
……
[root@proxy ~]# /usr/local/nginx/sbin/nginx -s reload

通过命令查看Nginx配置文件并应用新的配置信息,以刷新Nginx的服务。

  1. [root@proxy ~]# cat /usr/local/nginx/conf/nginx.conf

    • 使用cat命令来查看Nginx配置文件的内容,/usr/local/nginx/conf/nginx.confNginx配置文件的路径。
  2. ……

    • 省略了配置文件中的其他配置项。
  3. location /NginxStatus {

    • Nginx服务器的一个虚拟主机配置快。
    • /NginxStatus是虚拟主机的根目录,在这个块定义虚拟主机的特定行为。
  4. stub_status on

    • 启用Nginx状态信息显示功能。
    • 通过访问/NginxStatus这个URL,用户可以查看Nginx服务器的一些基本状态信息,如连接数、请求处理情况等。
  5. access_log on

    • 记录虚拟主机的访问日志,on启用访问日志功能。
  6. auth_basic "NginxStatus"

    • 启用了基本的HTTP认证功能,设置了认证领域的标题(这里NginxStatus)。
    • 将显示在用户认证时的浏览器弹出框中。
  7. auth_basic_user_file conf/htpasswd

    • 指定了存储用户认证信息的文件路径。
    • conf/htpasswd是一个位于Nginx配置文件目录中的文件,文件包含了用户名和密码。
    • Nginx使用这个文件来验证用户的登录凭证。
  8. [root@proxy ~]# /usr/local/nginx/sbin/nginx -s reload

    • Nginx配置文件进行了修改之后,使用该命令重新加载配置。
    • -s reload重新加载配置文件而不中断服务。

Nginx日志(访问与错误日志管理)

error_log  /var/log/nginx/error.log warn; // 配置错误日志的级别及存储目录
events { worker_connections 1024; }
http {
  ..................
  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  /var/log/nginx/access.log main;    // 配置访问日志存储目录}
  1. /var/log/nginx/error.log warn

    • /var/log/nginx/error.log 指定错误日志文件的存储路径。
    • warn日志级别,warn级别记录警告以及更严重的错误信息。
  2. events { worker_connections 1024; }

    • events模块的配置,涉及到Nginx服务器的网络连接参数。
    • 设置了每个工作进程可以同时处理的最大连接数为1024个。
  3. HTTP模块配置

    • log_format main...

      • 定义日志格式,日志格式使用了一些变量来记录访问请求的相关信息。

        • $remote_addr客户端IP地址。
        • $remote_user用户名。
        • $time_local访问时间。
        • ... 等。
    • access_log /var/log/nginx/access.log main

      • 定义访问日志的存储路径和使用日志的格式。
      • 访问日志记录每个请求的详细信息。
      • 请求的URL、响应状态码和传输字节数等。

http相关配置

http {    
  sendfile  on                  // 高效传输文件的模式 一定要开启    
  keepalive_timeout   65        // 客户端服务端请求超时时间
}
  1. sendfile on

    • sendfile是一种高效的文件传输方式。
  2. keepalive_timeout 65

    • 设置的超时时间为65秒。

静态资源配置

server {
  listen 80; 
  server_name mingongge.com; 
  location /static { 
    root /wwww/web/web_static_site;   
  }
  // 或
  location /image { 
    alias /web/nginx/static/image/;
  }
}
  1. location /static {...}

    • location块,用于匹配以/static开头的URL
  2. root /wwww/web/web_static_site

    • 指定了服务器上存储静态文件的根目录。
    • Nginx接收到对/static目录下文件的请求时,会在/www/web/web_static_site目录下查找并提供相应的文件。
    • 通常包含HTMLCSSJavaScript和图像等静态资源。
  3. alias /web/nginx/static/image/

    • alias设置一个别名,将/image映射到服务器文件系统中的实际目录/web/nginx/static/image/
    • Nginx接收到对/image/...的请求时,会到/web/nginx/static/image/目录下寻找对应的文件。

反向代理

http {
  .............    
  
  upstream product_server {        
    127.0.0.1:8081;    
  }    
  upstream admin_server { 
    127.0.0.1:8082; 
  }    
  upstream test_server { 
    127.0.0.1:8083; 
  }
  server {        // 默认指向 product 的 server  
    location / {      
      proxy_pass http://product_server;      
    }  
    location /product/ {      
      proxy_pass http://product_server;     
    }  
    location /admin/ {      
      proxy_pass http://admin_server;     
    }  
    location /test/ {     
      proxy_pass http://test_server;      
    }    
  }
}

通过使用Nginxupstream模块,可以定义多个后端服务器组,每个组包含一个/多个服务器。

server块中,可以根据不同的URL路径将请求转发到不同的upstream组。

  1. upstream product_server {...}

    • 定义名为product_serverupstream组。
    • 包含服务器127.0.0.1:8081
    • upstream admin_serverupstream test_server两个类似。
  2. location / {...}

    • 默认的匹配所有未被其他location配置的请求,都会被转发送到product_server
    • 下面3location配置相似。

负载均衡

upstream server_pools {   
  server 192.168.1.11:8880 weight=5;  
  server 192.168.1.12:9990 weight=1;  
  server 192.168.1.13:8989 weight=6;  // weigth 参数表示权值,权值越高被分配到的几率越大
}

server {    
  listen 80;   
  server_name mingongge.com;  
  
  location / {      
    proxy_pass http://server_pools;    
  }
}
  1. upstream server_pools {...}

    • 定义一个名为server_pools的上游服务器组,以及各服务器被分配到请求的权值。
  2. proxy_pass http://server_pools

    • 指明所有请求都会被反向代理到server_pools服务器组。

代理其他配置

proxy_connect_timeout 90;       // nginx跟后端服务器连接超时时间(代理连接超时)
proxy_send_timeout 90;          // 后端服务器数据回传时间(代理发送超时)
proxy_read_timeout 90;          // 连接成功后,后端服务器响应时间(代理接收超时)
proxy_buffer_size 4k;           // 代理服务器(nginx)保存用户头信息的缓冲区大小
proxy_buffers 4 32k;            // proxy_buffers缓冲区
proxy_busy_buffers_size 64k;    // 高负荷下缓冲大小(proxy_buffers*2)
proxy_temp_file_write_size 64k; // 设定缓存文件夹大小
proxy_set_header Host $host; 
proxy_set_header X-Forwarder-For $remote_addr;  // 获取客户端真实IP
  1. proxy_connect_timeout 90

    • Nginx与后端服务器建立连接超时时间为90秒。
  2. proxy_send_timeout 90

    • Nginx将数据发送给后端服务器的超时时间为90秒。
  3. proxy_read_timeout 90

    • Nginx从后端服务器读取响应的超时时间为90秒。
  4. proxy_buffer_size 4k

    • Nginx用于保存用户请求头信息的缓冲区大小为4k
  5. proxy_buffers 4 32k

    • Nginx用于处理后端服务器响应数据的缓冲区数量和大小。
    • Nginx将使用432k的缓冲区存储来自后端服务器的数据。
  6. proxy_busy_buffers_size 64k

    • 后端服务器负载较高时,用于指定Nginx在处理请求时可以使用的最大缓冲区大小。
  7. proxy_temp_file_write_size 64k

    • Nginx在后端服务器的响应数据写入临时文件时,每个文件的大小上限。
  8. proxy_set_header Host $host

    • 用于向后端服务器传递客户端请求中的特定信息。
    • Nginx$host变量的值传递给后端服务器。
    • $host变量通常包含客户端请求的主机名/域名。
  9. proxy_set_header X-Forwarder-For $remote_addr

    • proxy_set_header设置一个自定义的请求头X-Forwarder-For,值为$remote_addr
    • $remote_addr是客户端的IP地址。
    • 上述,后端服务器可以通过X-Forwarder-For,获取到客户端真实的IP地址。