赞
踩
Nginx(engine x)是一个轻量级的开源Web服务器软件,也可用作反向代理、负载均衡器和HTTP缓存。它的特点是占用资源少,能够处理更多的并发连接,具有高扩展性和高可靠性,因此被越来越多的大型网站所使用。Nginx采用事件驱动、异步非阻塞的方式来处理客户端的请求,支持HTTP、HTTPS、SMTP、POP3、IMAP等协议。同时,Nginx还集成了许多常用的功能,例如:反向代理、负载均衡、动态HTTP重写、访问控制、FastCGI接口、HTTPS加密等等。Nginx的设计目标是高性能、高并发、高可靠性和低资源消耗,因此被广泛应用于大型网站和应用场景中。
Nginx在Linux中的安装教程:https://blog.csdn.net/weixin_56817591/article/details/131176741?spm=1001.2014.3001.5501
Nginx在Windows中的安装教程:在 Nginx官网 中下载需要的Nginx版本,直接解压缩到一个任意目录即可使用。
Nginx1.22.0版本的目录结构通常如下所示:
/etc/nginx/ # 配置文件目录 |-- nginx.conf # Nginx主配置文件 |-- conf.d/ # 存放Nginx的虚拟主机等配置文件 |-- sites-available/ # 存放Nginx的虚拟主机配置文件 |-- sites-enabled/ # 存放Nginx的虚拟主机符号链接 |-- snippets/ # 存放Nginx配置文件片段 |-- fastcgi_params # 存放与FastCGI有关的参数文件 |-- scgi_params # 存放与SCGI有关的参数文件 |-- uwsgi_params # 存放与uWSGI有关的参数文件 |-- win-utf # 存放用于Windows编码的文件 /var/log/nginx/ # 存放Nginx的日志文件 |-- access.log # Nginx访问日志 |-- error.log # Nginx错误日志 /var/cache/nginx/ # 存放Nginx的缓存目录 /var/run/ # 存放Nginx的进程ID文件(`pid`) |-- nginx.pid # Nginx的主进程文件 /usr/share/nginx/html/ # 存放Nginx默认的Server根目录 |-- index.html # 默认网页文件 |-- 50x.html # 错误页面文件 /usr/sbin/nginx # Nginx的可执行文件
以上是Nginx1.22.0版本的目录结构,可以看出与其他版本的Nginx目录结构基本相同。需要注意的是Nginx的版本不同,目录结构可能会有所变化。
以下是Nginx1.22.0版本的主配置文件nginx.conf里面的内容,需要注意的是Nginx的版本不同,主配置文件nginx.conf里面的内容可能会有所变化。
... # global块 events { # events块 ... } http # http块 { ... # http全局块 upstream backend { # upstream块 server 192.168.0.1:8080; server 192.168.0.2:8080; ... } server # server块(可配置多个) { ... # server全局块 location [PATTERN] # location块(可配置多个) { ... } location [PATTERN] { ... } } server { ... } ... #http全局块 }
nginx.conf文件结构中块内容详解:
global块: 该块中的配置项作用于整个Nginx服务器,通常包含user、worker_processes等指令。
events块: 该块定义了Nginx事件模型的相关配置,常见的配置包括worker_connections、use、multi_accept等指令。
http块: 该块包含了所有HTTP模块的配置指令,通常包括server、upstream、types、error_log等指令,用于定义Nginx的HTTP服务。
upstream块:该块用于定义Nginx的负载均衡集群,包含server指令以及它们的参数。
server块: 该块用于定义虚拟主机的相关配置,通常包括listen、server_name、root、index、access_log等指令,用于定义Nginx虚拟主机的监听端口、域名、文档根目录、默认文件、访问日志等。
location块:该块用于匹配URL地址,通常包含proxy_pass、fastcgi_pass、rewrite、expires等指令,用于定义Nginx的反向代、FastCGI、URL重写、缓存等。
通过以上分析,我们可以看出,nginx.conf文件的结构对于 Nginx 服务器的性能、安全、稳定等诸多方面都有着重要的影响。在配置Nginx时,需要根据实际需求进行设置,才能达到最佳的效果。在nginx.conf文件中,不同的块和指令可以进行多次定义,以满足不同的需求。同时,需要注意块与块之间的嵌套关系和格式规范,以确保配置文件的正确性和Nginx的正常运行。
#user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } 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 logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.htm; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ \.php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} } # another virtual host using mix of IP-, name-, and port-based configuration # #server { # listen 8000; # listen somename:8080; # server_name somename alias another.alias; # location / { # root html; # index index.html index.htm; # } #} # HTTPS server # #server { # listen 443 ssl; # server_name localhost; # ssl_certificate cert.pem; # ssl_certificate_key cert.key; # ssl_session_cache shared:SSL:1m; # ssl_session_timeout 5m; # ssl_ciphers HIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on; # location / { # root html; # index index.html index.htm; # } #} }
# 用于指定Nginx进程运行的用户,默认为nobody。该用户需要具备Nginx运行所需的权限,一般情况下不建议使用root用户运行Nginx。 user nobody; # 指定Nginx使用的worker进程数,一般推荐将该值设置为处理器核心数的2倍。 worker_processes 1; # 用于指定Nginx错误日志的存储路径和记录级别,可以设置多个错误日志记录级别,每个记录级别之间用空格分隔。 error_log logs/error.log; # 指令用于指定错误日志的存储路径。 error_log logs/error.log notice; # 指令用于指定记录级别为notice的错误日志。 error_log logs/error.log info; # 指令用于指定记录级别为info的错误日志。 # 指定Nginx主进程的pid文件路径,一般用于管理Nginx服务器进程。该文件记录了Nginx主进程的pid,可以通过该pid文件进行控制和管理。 pid logs/nginx.pid; # events块是Nginx配置文件中的一个块,用于配置Nginx事件模型的相关参数。 events { # 用于指定每个worker进程能够同时处理的最大连接数。 worker_connections 1024; } # http块是Nginx配置文件中的一个块,主要用于配置HTTP服务器的全局参数和默认行为。 http { # 用于引入其他文件,该指令用于引入Nginx中所需的MIME类型声明文件,即mime.types文件。 include mime.types; # 定义默认的MIME类型,当请求文件的MIME类型无法匹配到定义的具体类型时,Nginx会调用默认类型进行处理。 default_type application/octet-stream; # 用于定义Nginx日志格式,具体定义方法通过格式字符串来实现。 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; # 用于指定HTTP访问日志的存储路径和日志格式,可以设置多个日志格式和文件路径。 access_log logs/access.log main; # 用于开启Nginx的高效传输文件功能。 sendfile on; # 用于开启TCP的Nagle算法,避免出现小数据包的情况,提升数据传输效率。 tcp_nopush on; # 用于设置HTTP长连接的超时时间。HTTP长连接是指建立一次TCP连接后,客户端和服务器之间可以进行多次HTTP请求和相应,以避免在短 时间内频繁地建立和关闭TCP连接,提升性能。 keepalive_timeout 0; # 为0时,表示不开启长连接。 keepalive_timeout 65; # 为65时,表示每个长连接的超时时间为65秒。 # 用于开启Nginx的压缩功能,在传输文件时对文件进行压缩,以减少网络传输量。 gzip on; server { # 指定该HTTP服务器监听本机的80端口。 listen 80; # 配置HTTP服务器所使用的域名为localhost。 server_name localhost; # 配置HTTP服务器使用的字符编码为koi8-r。该参数用于设置响应头中的Content-Type字段指定服务器处理的数据采用的字符编码。 charset koi8-r; # 配置HTTP服务器的访问日志。其中,access_log指令用于开启访问日志记录功能,logs/host.access.log指明日志记录的位置和 文件名,main指定日志格式。 access_log logs/host.access.log main; # 配置HTTP服务器的根目录为/,设定默认的首页文件为index.html和index.htm。当请求到达服务器后,Nginx将会使用html子目 录下对应的文件来处理请求。 location / { root html; index index.html index.htm; } # 当HTTP服务器返回404错误时,该配置会将错误页面重定向到/404.html的静态页面。 error_page 404 /404.html; # 这句话表示将服务器错误页面重定向到名称为50x.html的静态页面。 # redirect server error pages to the static page /50x.html # 当HTTP服务器返回5xx系列错误时,该配置会将错误页面重定向到/50x.html的静态页面。这里的5xx系列错误包括了500、502、 503、504等多种错误。 error_page 500 502 503 504 /50x.html; # 指定/50x.html页面所在的根目录为html。当用户访问/50x.html页面时,Nginx会在html目录下查找对应的静态页面文件,并将其 返回给客户端。 location = /50x.html { root html; } # 这段Nginx配置将PHP脚本的请求代理到运行在本地127.0.0.1:80端口的Apache服务器上进行处理。 # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # 这行配置使用正则表达式匹配所有以.php为扩展名的请求,即将所有PHP文件的请求匹配出来。 location ~ \.php$ { # 该指令指定将请求代理到本地127.0.0.1地址上。它将所有匹配出来的PHP文件请求转发到该地址,并等待目标服务器处理并返 回处理结果。 proxy_pass http://127.0.0.1; } # 这段Nginx配置将将PHP脚本的请求代理到运行在本地"127.0.0.1:9000"地址上的 FastCGI 服务器进行处理。 # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # 该行配置使用正则表达式匹配所有以 .php 结尾的请求,将所有 PHP 文件的请求匹配出来。 location ~ \.php$ { # 指定了 Web 服务器的根目录,用于定位 PHP 文件的位置。 root html; # 指定了将请求代理到本地运行在 127.0.0.1:9000 地址上的 FastCGI 服务器处理,用于接收 PHP 文件的解析请求。 fastcgi_pass 127.0.0.1:9000; # 表示当请求的 URI 指向一个目录时,使用 index.php 作为默认文档。 fastcgi_index index.php; # 将解析后的 PHP 文件路径传递给 FastCGI 服务器,以便 FastCGI 服务器可以定位和处理请求。 fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # 引入了 FastCGI 的参数配置文件,通常用于定义共享的 FastCGI 参数。 include fastcgi_params; } # 这段 Nginx 配置用于在 Apache 和 Nginx 共存时,防止 Nginx 直接访问 Apache 的 .htaccess 文件。 # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # 该行配置使用正则表达式匹配所有以 .ht 开头的请求,包括 .htaccess 文件等这些需要 Apache 处理的文件。 location ~ /\.ht { # 拒绝所有请求,也就是禁止访问这些文件。 deny all; } } # 这段文字描述了Nginx配置文件中一个混合IP、名称和端口的虚拟主机的配置。 # another virtual host using mix of IP-, name-, and port-based configuration server { # 表示监听本机的8000端口, listen 8000; # 表示绑定到名为somename的特定通信地址上的8080端口。 listen somename:8080; # 配置HTTP服务器所使用的域名。其中,somename为主域名,alias和another.alias为该服务器的别名。当客户端通过这些域名访 问该服务器时,Nginx会将请求路由到该服务器上。 server_name somename alias another.alias; # 配置HTTP服务器的根目录为/,设定默认的首页文件为index.html和index.htm。当请求到达服务器后,Nginx将会使用html子目 录下对应的文件来处理请求。 location / { root html; index index.html index.htm; } } # 这段文字描述了Nginx配置文件中一个HTTPS服务器的配置 # HTTPS server server { # 指定HTTPS服务器的监听端口和协议,其中443是HTTPS默认端口号,ssl表示启用SSL/TLS加密通信。 listen 443 ssl; # 指定HTTPS服务器绑定的域名为localhost。 server_name localhost; # ssl_certificate cert.pem及ssl_certificate_key cert.key: 配置服务器所使用的SSL/TLS证书和私钥。 ssl_certificate cert.pem; ssl_certificate_key cert.key; # ssl_session_cache shared:SSL:1m及ssl_session_timeout 5m: 配置SSL会话缓存和超时时间。 ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; # 配置允许使用的SSL密码套件。 ssl_ciphers HIGH:!aNULL:!MD5; # 配置使用服务端优先的SSL密码套件。 ssl_prefer_server_ciphers on; # 配置HTTPS服务器的网站根目录为/,同时设定默认的首页文件为index.html和index.htm。当请求到达服务器后,Nginx将会使用 html子目录下对应的文件来处理请求。 location / { root html; index index.html index.htm; } } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。