资讯专栏INFORMATION COLUMN

Nginx 学习总结(2) —— 基本配置

leoperfect / 982人阅读

摘要:配置信息主要分为六大部分全局设置事件设置服务器设置虚拟主机设置匹配设置反向代理设置。最大客户端连接数由和决定作为服务器时,作为反向代理时,。参考文章服务器安装及配置文件详解的配置虚拟主机负载均衡和反向代理

这是 Nginx 学习总结的第二篇,上一篇介绍到了 Nginx 学习总结(1) —— 概述,这一篇会对 Nginx 的基本配置做一些总结。

Nginx 配置信息主要分为六大部分: main(全局设置)events(事件设置)http(HTTP服务器设置)sever(虚拟主机设置)location(URL匹配设置)upstream(反向代理设置)

main 模块
user nobody nobody;

worker_processes auto;

error_log  /usr/local/var/log/nginx/error.log  error;

pid        /usr/local/var/run/nginx/nginx.pid;

worker_rlimit_nofile 1024;

user 指定 Worker 进程的运行用户以及用户组,默认由 nobody 运行;

worker_processes 设置 Nginx 要开启的 Worker 进程数。最优值取决于许多因素,包括(但不限于)CPU 内核的数量、存储数据的硬盘数量及负载模式。不能确定的时候,将其设置为可用的 CPU 内核数将是一个好的开始(设置为auto将尝试自动检测它);

error_log 指定全局错误日志的输出文件位置和错误级别。日志级别有 debuginfonoticewarnerrorcritalertemerg 可供选择,错误级别依次递增。设置某个日志级别将记录指定的以及错误级别更高的所有消息(即 debug 输出日志最为最详细,而 emerg 输出日志最少)。默认开启为 error。想要开启 debug 错误级别,需要在编译 Nginx 时指定 --with-debug 参数;

pid 指定记录 PID 进程的存储文件位置( Nginx 向 Worker 进程发送信号时,需要知道是在向哪个进程发送信息,而不同的进程有不同的 PID),用户仅需创建该空白文件即可;

worker_rlimit_nofile 设置每个 Worker 进程可以打开的最大文件数目(如果不设置该选项,则该选项的值为操作系统的限制值,使用“ulimit -a”命令可查看)。

events 模块
events {
    use epoll; 
    worker_connections  1024;
}

use 设置事件处理模型。Nginx 支持的事件处理模型有: selectpollkqueueepollrtsig/dev/poll,其中 kqueue(BSD 特有) 和 epoll(Linux 特有) 都是高效的事件处理模型。如果不设置,Nginx 将会自动选择一个最适合当前操作系统的事件处理模型;

worker_connections 设置每个 Worker 进程能并发处理的最大连接数。最大客户端连接数由 worker_processesworker_connections 决定:Nginx 作为 HTTP 服务器时,Max_clients = worker_processes * worker_connections;Nginx 作为反向代理时,Max_clients = worker_processes * worker_connections / 4

http 模块
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  /usr/local/var/log/nginx/access.log  main;
    #access_log off

    sendfile        on;
    tcp_nopush      on;
    tcp_nodelay     on;

    keepalive_timeout  65;
    
    # gzip压缩功能设置
    gzip  on;
    gzip_min_length 1k;
    gzip_buffers    4 16k;
    gzip_http_version 1.0;
    gzip_comp_level 6;
    
    client_max_body_size 10M;
    client_body_buffer_size 128k;
    
    # http_proxy 设置
    proxy_connect_timeout   75;
    proxy_send_timeout   75;
    proxy_read_timeout   75;
    proxy_buffer_size   4k;
    proxy_buffers   4 32k;
    proxy_busy_buffers_size   64k;
    proxy_temp_file_write_size  64k;
    proxy_temp_path   /usr/local/nginx/proxy_temp 1 2;

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

include 加载 mime.type 文件,用于帮助 Nginx 识别文件的 MIME 类型;

default_type 指定文件默认的 MIME 类型。例如,在没有配置 asp 的环境时,Nginx 是不予解析的,此时,浏览器访问 asp 文件就会出现下载了;

log_format 设置日志的格式;

access_log 设置 access_log 日志文件地址;

sendfile 是否开启高效文件传输模式。将 tcp_nopushtcp_nodelay 两个指令设置为 on 用于防止网络阻塞;

keepalive_timeout 设置客户端连接保持活动的超时时间,在超过这个时间之后,服务器会关闭该连接;

gzip 是否开启 gzip 压缩,这将会减少我们发送的数据量;

client_max_body_size 允许客户端请求的最大单文件字节数。如果上传较大文件,请增加它的限制值;

client_body_buffer_size 允许客户端请求的最大缓冲区字节数;

proxy_connect_timeout 设置与后端服务器连接超时时间。

server 模块
server {
    listen       80;
    server_name  localhost 192.168.12.10 jochen.com;
        
    root   /usr/www;
    index  index.php index.html index.htm; 

    charset utf-8;
    
    error_page  404   /404.html;
    error_page  403   /403.html;
    error_page  500 502 503 504  /50x.html;
    
    access_log  usr/local/var/log/host.access.log  main;
    aerror_log  usr/local/var/log/host.error.log  error;
}

listen 设置监听端口,默认 80,小于 1024 的要以 root 用户启动。可以为 listen *:80listen 127.0.0.1:80 等形式;

server_name 设置域名,多个域名之间用空格分开;

root 设置虚拟主机的默认网站根目录;

index 定义默认访问的文件名;

charset 设置网页的默认编码格式;

error_page 设置错误页面,相对于上面的 root 目录。

location 模块
location / {
    root   /usr/share/nginx/html;
    index  index.php index.html index.htm;
}

location ~ .php$ {
    root           /usr/share/nginx/html;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include        fastcgi.conf;
}

location /nginx-status {
  stub_status on;
  allow 192.168.10.100;
  allow 172.29.73.0/24;
  deny all;
}

location 模块用于针对某些特定的 URL 进行配置,有关 location 匹配规则详情请见《Nginx 学习总结(3) —— location 模块》。

upstram 模块
upstream jochen.com {
    ip_hash;
    server 192.168.12.1:80;
    server 192.168.12.2:80 down;
    server 192.168.12.3:8080  max_fails=3  fail_timeout=20s;
    server 192.168.12.4:8080;
}

upstream 模块用于负载均衡,有关 upstream 模块详情请见《Nginx 学习总结(7) —— 负载均衡》。

参考文章:

nginx documentation

nginx 服务器安装及配置文件详解

nginx 的配置、虚拟主机、负载均衡和反向代理(1)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/39852.html

相关文章

  • Nginx 学习总结(3)—— Location 模块

    摘要:改为后,显示出文件的大概大小,单位是或者或者默认为,显示的文件时间为时间。 这是 Nginx 学习总结的第三篇,上一篇介绍到了 Nginx 学习总结(2) —— 基本配置,这一篇会对Location 模块 做一些总结。我们知道,Location 模块 主要是用于针对某些特定的 URL 进行配置,可以由前缀字符串定义,也可以由正则表达式定义。 Location 匹配规则 location...

    biaoxiaoduan 评论0 收藏0
  • 慕课网_《Docker入门》学习总结

    摘要:时间年月日星期六说明本文部分内容均来自慕课网。必填用于执行命令,当执行完毕后,将产生一个新的文件层。可选指定此镜像启动时默认执行命令。可选用于指定需要暴露的网络端口号。可选向镜像中挂载一个卷组。 时间:2017年09月16日星期六说明:本文部分内容均来自慕课网。@慕课网:http://www.imooc.com 教学源码:无 学习源码:无 第一章:课程简介 1-1 课程介绍 Docke...

    CoorChice 评论0 收藏0
  • Nginx 学习总结(6) —— 负载均衡

    摘要:实现负载均衡负载均衡是反向代理技术的一种运用。而实现负载均衡的核心在于如何将请求合理地分配给不同的后端服务器。 这是 Nginx 学习总结的第六篇,上一篇介绍到了 Nginx 学习总结(5) —— 反向代理,本文主要演示结合 proxy 和 upstream 模块的使用来实现 Nginx 的负载均衡。 Nginx 官网中对 upstream 模块的介绍:ngx_http_upstrea...

    wwq0327 评论0 收藏0
  • Nginx 学习总结(1) —— 概述

    摘要:模块化体系的内部结构是由核心部分和一系列的功能模块所组成。除此之外,应用相关的功能都是在一系列的功能模块中完成。将各功能模块组织成一条链,当有请求到达的时候,请求依次经过这条链上的部分或者全部模块进行处理。 Nginx 是什么 Nginx 是一款轻量的(相比 Apache、Lighttpd 而言)、高性能的 HTTP 服务器,同时也可以用作反向代理、负载平衡器和 HTTP 缓存。Ngi...

    james 评论0 收藏0
  • Nginx 学习总结(5) —— 反向代理

    摘要:代理请求当代理请求时,它会将请求发送到指定的代理服务器,获取响应并将其发送回客户端。是否启用缓冲使用指令,默认是开启的。 这是 Nginx 学习总结的第五篇,上一篇介绍到了 Nginx 学习总结(4)—— Rewrite 模块,这一篇会对 反向代理 相关知识做一些总结。 什么是代理?代理通常用于在多个服务器之间分配负载,无缝地显示来自不同网站的内容,或通过除 HTTP 以外的协议将请求...

    Achilles 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<