Nginx配置详细说明

Nginx的配置文件通常位于 /etc/nginx/nginx.conf/etc/nginx/conf.d/ 目录下。配置文件由多个块组成,主要包括全局块、events块、http块、server块和location块。

  1. 全局块:配置影响Nginx全局的指令,如用户、工作进程数、错误日志等。

    user nginx;
    worker_processes auto;
    error_log /var/log/nginx/error.log;
    pid /var/run/nginx.pid;
  2. events块:配置影响Nginx服务器与客户端网络连接的指令,如最大连接数、连接处理方式等。

    events {
        worker_connections 1024;
        use epoll;
    }
  3. http块:配置HTTP服务器的主要部分,包括MIME类型、日志格式、默认类型等。

    http {
        include /etc/nginx/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 /var/log/nginx/access.log main;
        sendfile on;
        keepalive_timeout 65;
    }
  4. server块:配置虚拟主机的相关参数,如监听端口、服务器名称、根目录等。

    server {
        listen 80;
        server_name example.com;
        root /var/www/html;
        index index.html index.htm;
    }
  5. location块:配置请求的路由规则,如URL匹配、代理、重定向等。

    location / {
        try_files $uri $uri/ =404;
    }
    location /api/ {
        proxy_pass http://backend_server;
    }

Nginx配置案例

以下是一个简单的Nginx配置案例,用于配置一个静态网站和一个API代理。

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;

events {
    worker_connections 1024;
}

http {
    include /etc/nginx/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 /var/log/nginx/access.log main;
    sendfile on;
    keepalive_timeout 65;

    server {
        listen 80;
        server_name example.com;
        root /var/www/html;
        index index.html index.htm;

        location / {
            try_files $uri $uri/ =404;
        }

        location /api/ {
            proxy_pass http://backend_server;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
}

解释

  • 全局块:配置了Nginx的用户、工作进程数、错误日志和PID文件。

  • events块:配置了最大连接数和使用的连接处理方式。

  • http块:配置了MIME类型、日志格式、默认类型、访问日志、sendfile和keepalive超时。

  • server块:配置了一个监听80端口的虚拟主机,服务器名称为example.com,根目录为/var/www/html,默认文件为index.htmlindex.htm

  • location块

    • /:尝试匹配请求的URI,如果找不到文件则返回404。

    • /api/:将请求代理到backend_server,并设置了一些代理头。

这个配置可以用于托管一个静态网站,并将所有以/api/开头的请求代理到后端服务器。

本篇文章内容来源于:Nginx配置详细说明以及案例