前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Nginx服务器基础配置

Nginx服务器基础配置

作者头像
用户5921339
发布于 2025-05-20 08:27:19
发布于 2025-05-20 08:27:19
2780
举报

Nginx简介

Nginx服务器以其功能丰富著称。它既能作为HTTP服务器,也可作为反向代理服务器或者邮件服务器;能够快速响应静态页面(HTML)的请求;支持FastCGI、SSL、Virtual Host、URL、Rewrite、HTTP Base Auth、Gzip等大量使用功能;并且支持很多的第三方功能模块的扩展。

我们将Nginx提供的基本功能服务从大体上归纳为基本HTTP服务、高级HTTP服务和邮件服务三大类。

  • Nginx提供基本HTTP服务,可以作为HTTP代理服务器和反向代理服务器,支持通过缓存加速访问,可以完成简单的负载均衡和容错,支持包过滤功能,支持SSL等。
  • Nginx能提供高级HTTP服务,可以进行自定义配置,支持虚拟主机,支持URL重定向,支持网络监控,还支持流媒体传输等。
  • Nginx作为邮件代理服务器是最早开发这个产品的目的之一,它支持IMAP/POP3代理服务功能,支持内部SMTP代理服务功能。

Nginx服务器的基础配置指令

默认的Nginx服务器配置文件都存放在安装目录conf中,主配置文件名为nginx.conf,以下代码是缺省的nginx.conf文件中的内容。

代码语言:txt
AI代码解释
复制
user  nginx nginx;  
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] "
    #                  'status body_bytes_sent "
    #                  '"
 
    #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服务器主配置文件比较长,不过结构和内容比较清晰,接下来将对以上内容进行详细介绍。

代码语言:txt
AI代码解释
复制
...              #global块  
 
events {         #events块  
   ...  
}  
 
http      #http块  
{  
    ...   #http全局块  
    server        #server块  
    {   
        ...       #server全局块  
        location [PATTERN]   #location块  
        {  
            ...  
        }  
        location [PATTERN]   
        {  
            ...  
        }  
    }  
    server  
    {  
      ...  
    }  
    ...     #http全局块  
}  

配置文件支持大量可配置的指令,绝大多数指令不是特定属于某一个块。同一个指令放在不同层级的块中,其作用域也不同,一般情况下,高一级块中的指令可以作用于自身所在块和此块包含的所有的低层级块。如果某个指令在两个不同层级的块中同时出现,则采用“就近原则”,即以低层级块中的配置为准。比如,某指令同时出现在http全局块中和server块中,并且配置不同,则应该以server块中的配置为准。

从上面的内容可以看出,主配置文件主要包含5个块,即global,events、http、server和location,我们先来看看各个块的作用。

  1. global 全局(global)块是配置文件中从开始到events块之间的部分,主要设置一些影响Nginx服务器全局运行的配置指令。 全局块配置通常包含运行Nginx服务器的用户、组,Nginx进程的PID存放路径,允许生成的worker process数,日志存放路径及配置文件引入等。
  2. events events块涉及的指令主要影响Nginx服务器与用户的网络连接。常用到的设置包括是否开启对worker process下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个请求的最大连接数等。
  3. http http块是Nginx服务器配置中的重要部分,代理、缓存和日志定义等绝大多数的功能和第三方模块的配置都放在这个块中。可以在http块中配置的指令主要包括文件的引入,MIME-Type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数上限等。
  4. server server块主要配置虚拟主机相关参数,每一个http块都可以包含多个server块,其作用域为本server块,不会影响其他server块。
  5. location 每个server块可以包含多个location块,严格意义上来说,location是server块的一个指令。这些location块的主要作用是对特定请求(路由)的处理。地址重定向、数据缓存和应答控制都是在这部分实现的。许多第三方模块的功能也是在location块中配置的。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-07-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT人家 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档