一、什么是Nginx?

Nginx是一款高性能的开源Web服务器软件,也可以作为反向代理服务器、邮件代理服务器、负载均衡器等使用。它采用事件驱动的异步非阻塞处理方式,可以处理大量的并发请求,同时占用的系统资源也较少。Nginx具有高度的可配置性和灵活性,可以通过各种模块进行扩展,支持多种语言和协议,如HTTP、HTTPS、SMTP、POP3、IMAP等。Nginx在互联网领域有广泛的应用,包括大型网站、CDN、云计算平台、移动应用后端等。

二、nginx.conf文件常见属性

  1. worker_processes:nginx工作进程数目,一般设置为CPU核心数的2倍。
  2. worker_connections:每个worker进程能够处理的最大连接数。
  3. error_log:nginx错误日志文件路径。
  4. pid:nginx进程pid文件路径。
  5. events:nginx事件模块配置,包括worker_connections和use等属性。
  6. http:nginx HTTP模块配置,包括server和upstream等属性。
  7. server:nginx HTTP模块中的server块配置,包括listen、server_name、root、index等属性。
  8. location:nginx HTTP模块中的location块配置,包括proxy_pass、root、index、rewrite等属性。
  9. access_log:nginx访问日志文件路径。
  10. root:nginx静态资源根目录。
  11. index:nginx默认首页文件名。
  12. rewrite:nginx重定向配置,包括rewrite和if等属性。

upstream:nginx负载均衡配置,指定多个后端服务器地址和权重。
以上是nginx.conf文件中常见的配置属性及其含义,具体使用时需要根据自己的业务需求进行配置。

三、详细的nginx.conf文件配置范例

# 设置nginx运行的用户
user  nginx;
# 设置nginx工作进程数目,一般设置为CPU核心数的2倍
worker_processes  2;
# nginx错误日志文件路径及级别为warn
error_log  /var/log/nginx/error.log warn;
# nginx进程pid文件路径
pid        /var/run/nginx.pid;
# nginx事件模块配置,包括worker_connections和use等属性
events {
    # 每个worker进程能够处理的最大连接数
    worker_connections  1024;
}
# nginx HTTP模块配置,包括server和upstream等属性
http {
    # 包含mime.types文件,设置默认文件类型为application/octet-stream
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    # nginx访问日志文件路径及格式为main
    access_log  /var/log/nginx/access.log  main;
    # 开启sendfile功能,提高文件传输效率。
    sendfile        on;
    # 设置keepalive连接的超时时间为65秒
    keepalive_timeout  65;
    # 配置HTTP服务器,监听80端口,指定example.com域名
    server {
        listen       80;
        server_name  example.com;
        # 配置根目录
        root   /usr/share/nginx/html;
        # 配置首页文件名
        index  index.html index.htm;
        # 配置location块,用于处理不同的请求
        location / {
            # 配置静态资源缓存时间为1天
            expires 1d;
            # 配置缓存的静态资源类型
            add_header Cache-Control public;
            # 配置gzip压缩
            gzip on;
            gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
            # 配置反向代理,将请求转发到http://backend.example.com
            proxy_pass http://backend.example.com;
        }
        # 配置location块,用于处理/api/路径下的请求
        location /api/ {
            # 配置反向代理,将请求转发到http://api.example.com
            proxy_pass http://api.example.com;
            # 配置HTTP请求头
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_set_header X-NginX-Proxy true;
            # 配置缓存时间为1分钟
            expires 1m;
            # 配置缓存的静态资源类型
            add_header Cache-Control public;
            # 配置gzip压缩
            gzip on;
            gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
        }
    }
    # 配置upstream块,用于负载均衡
    upstream backend {
        # 配置backend1服务器,并设置权重为5
        server backend1.example.com weight=5;
        # 配置backend2服务器
        server backend2.example.com;
        # 配置backend3服务器
        server backend3.example.com;
    }
}
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐