nginx配置文件详解及常用功能配置命令(nginx配置文件详解带实例)

nginx配置文件详解及常用功能配置命令(nginx配置文件详解带实例)

一、Nginx的功能概述

Nginx主要功能包括高性能的HTTP和反向代理服务、负载均衡、动静分离处理、邮件代理服务等。以下详细探讨Nginx的主要功能:

1、静态内容服务

传输速度快:Nginx设计为一个高性能的HTTP服务器,能够快速传输静态文件,如HTML、图片和视频等。

简单高效:占用系统资源少,使其在处理高并发请求时表现出色。

2、反向代理与负载均衡

反向代理功能:Nginx可以将客户端请求转发到后端服务器,并将响应结果返回给客户端,从而对客户端隐藏后端服务器的详细信息。

负载均衡策略:支持多种负载均衡算法如轮询、权重、IP哈希等,能有效分散请求压力,提升网站服务的可用性和性能。

3、动静分离处理

动态内容处理:Nginx可以与PHP、Python等后端应用服务器集成,通过FastCGI等方式处理动态内容。

静态内容优化:对于静态文件,Nginx可以直接从其缓存中高效率地服务,减少后端应用服务器的压力。

4、邮件代理服务

邮件代理功能:除了Web服务外,Nginx还提供邮件代理服务,能够代理IMAP、POP3及SMTP协议的请求。

5、SSL/TLS支持

安全性增强:支持SSL/TLS协议,可为网站提供HTTPS服务,保障数据传输过程的安全性。URL重写与虚拟主机配置

URL重写能力:可以根据规则对URL进行修改、重定向,有助于网站优化和美化。

虚拟主机支持:允许在同一服务器上部署多个网站,并根据域名分发请求,节省资源且便于管理。

6、配置文件简洁明了

易于配置:Nginx的配置文件结构清晰,注释详细,便于理解和维护。热部署与灵活性

无缝升级:Nginx支持热部署,可以在不中断服务的情况下进行软件版本的升级。

扩展性高:模块化设计和开放的插件系统使得Nginx拥有很高的自定义和扩展能力。

二、配置文件详解

Nginx的配置文件是nginx.conf,不过可以在conf.d目录下添加多个不同名称的配置文件,同时生效。生产环境有多个域名需要代理出去时,常常在conf.d目录下配置各自域名的发布或代理信息。

nginx配置文件一般包括全局块,events块,http块等组成,一个http块可包含一个或多个server块,一个server块可以包含一个或多个location块

下面是nginx配置文件的结构图:

nginx配置文件详解及常用功能配置命令(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        #    }    # 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;    #    }    #}}

1、全局块

全局块是配置影响Nginx全局的参数。

user nginx;worker_processes  auto;#error_log  logs/error.log;#error_log  logs/error.log  notice;#error_log  logs/error.log  info;#pid        logs/nginx.pid;

主要参数说明:

user :指定nginx运行的用户和用户组,默认是nobody,一般会使用nginx

workker_processes :指定Nginx启动的工作进程数,建议设置为CPU核心数的两倍或设置为auto,由Nginx自行选择  。

error_log和pid一般使用默认就行,会自动将信息放置在安装时指定的位置

2、events块

设定Nginx的工作模式及连接上限

events {    # 定义每个工作进程可以处理的最大连接数    worker_connections  65535;}

workker_connections :定义每个工作进程可以处理的最大连接数,根据服务器性能和并发需求进行适当调整。

3、http块

http块是整个配置文件的核心部分,大部分配置都在此处操作。http块可以嵌套多个server块,

包含HTTP相关的指令,如文件引入、MIME-Type定义、日志自定义、连接超时时间等。

可以嵌套多个server块,用于配置不同的虚拟主机而server块也可以嵌套多个location块,用于配置不同的URL。

http {    include       mime.types;    default_type  application/octet-stream;    sendfile on;   # 开启高效传输模式    keepalive_timeout  65;    server {        listen       80;        server_name  localhost;        #access_log  logs/host.access.log  main;        location / {            root   html;            index  index.html index.htm;        }

4、server块

一个server块代表一个虚拟主机,可以配置多个,用于支持多个域名或IP地址,端口。

一个server块可以包含多个location块。

server {        listen       9080;        server_name  www.liyb.com;        location / {            root   /opt/nginx/html;            index  index.html index.htm;        }        error_page  404              /404.html;        error_page   500 502 503 504  /50x.html;        location = /50x.html {            root   html;        }

主要参数说明

listen:指定Nginx监听端口,可以指定任意端口,但不可以端口冲突。

server_name:指定虚拟主机的域名或IP 域名匹配的四种写法:

# 精确匹配server_name http://www.liyb.com;# 左侧匹配server_name *.liyb.com;#右侧通配server_name www.liyb.*;# 正则匹配server_name ~^www\.liyb\.*$;

root : 指定静态资源目录位置,当用户访问www.liyb.com:9080时,实际访问的是/opt/nginx/html/index.html

error_page 404:指定 404 错误页面的位置

error_page   500 502 503 504 :指定50开头的错误页面的位置

5.location块

配置URL路径的指令,可以定义URL路径的匹配规则和处理方式,如反向代理、重定向等

location / {    root   html;    index  index.html index.htm;}location = /50x.html {    root   html;}

location配置有多种匹配规则:

= 精确匹配~ 正则匹配,区分大小写~* 正则匹配,不区分大小写^~  匹配到就停止搜索

location配置实例:

server {        listen       80;        server_name  www.liyb.com;# 当访问www.liyb.com/web02时,会匹配上/usr/local/nginx/html/index.html        location = /web02 {            root   /usr/local/nginx/html;            index  index.html index.htm;        }# 只有当访问www.liyb.com/web01时才会匹配到/usr/local/nignx/html/web01        location = /web01 {            root   /usr/local/nginx/html;        }# 当访问www.liyb.com/dog.jpg等路径时会匹配到/usr/local/nginx/html/dog.jpg         location ~ \.(jpeg|jpg|png)$ {            root   /usr/local/nginx/html;        }}

三、常用功能配置示例

1、反向代理

反向代理配置主要通过proxy_pass指令实现,将请求转发到后端服务器

server {    listen 8090;    server_name www.liyb.com;    location / {        proxy_pass http://app;        proxy_set_header Host $host;        proxy_set_header X-Real-IP $remote_addr;        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;    }}# 配置后端服务器组upstream app {    server 10.10.10.100:8090;    server 10.10.10.101:8090;}

2、负载均衡

负载均衡是将单个服务器负载均衡到多个服务器上,使得大量并发访问或数据流量分担到多个服务器上,从而减少用户的等待响应时间。

负载均衡通过配置upstream指令定义一组后端服务器,并通过反向代理将请求分发到这些服务器,一般会给服务器添加权重,加权轮询

upstream web {    server 10.10.10.100 weight=1;    server 10.10.10.101 weight=2;    server 10.10.10.102 down;}server {    listen 80;    location / {        proxy_pass http://web;    }}

3、配置https

一般公司都注册自己的域名,获取到相应的SSL证书和私钥即可快速配置

server {    listen 443 ssl;    server_name www.liyb.com;     ssl_certificate /path/to/your_certificate.pem; # 证书文件路径    ssl_certificate_key /path/to/your_private.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常用命令

# 重新加载,热重启nginx -s reload  # 关闭nginxnginx -s stop # 优雅关闭,等待进程处理完后再关闭nginx -s quit # 检查nginx配置nginx -t # 如果做成了systemd服务,可以使用以下命令来操作nginx# 重启systemctl restart nginx# 停止nginxsystemctl stop nginx# 启动nginxsystemctl start nginx# 重新加载nginxsystemctl reload nginx
以上就是关于nginx配置文件解析的知识分享完结!感谢您的阅读
版权声明

   站内部分内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供网络资源分享服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请 联系我们 一经核实,立即删除。并对发布账号进行永久封禁处理。在为用户提供最好的产品同时,保证优秀的服务质量。


本站仅提供信息存储空间,不拥有所有权,不承担相关法律责任。

给TA打赏
共{{data.count}}人
人已打赏
网站技巧

nginx反向代理与负载均衡配置的区别(nginx反向代理服务器优缺点)

2025-2-24 21:20:25

网站技巧

随机图片 api

2025-2-24 21:20:28

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索