📜  NGINX指令|指令列表(1)

📅  最后修改于: 2023-12-03 15:03:10.873000             🧑  作者: Mango

NGINX指令

NGINX是一个高性能的Web服务器和反向代理服务器,它的配置文件主要由各种指令组成。这篇文章将介绍一些常用的NGINX指令,以及它们的用法和一些例子。

HTTP指令
server
server {
    listen       80;
    server_name  example.com;
    root         /var/www/example.com;
    index        index.html;
}

server指令用于定义一个HTTP服务器块,每个服务器块表示一个虚拟主机。上面的例子定义了一个监听80端口的HTTP服务器块,它的域名是example.com。当访问example.com时,将返回/var/www/example.com目录下的index.html文件。

location
location / {
    try_files $uri $uri/ /index.html;
}

location指令用于匹配请求URI,并定义处理请求的方式。上面的例子定义了一个location,它将匹配所有的请求URI。try_files指令将尝试查找请求URI对应的文件,如果找到则直接返回文件内容,否则将返回index.html文件的内容。

rewrite
location / {
    rewrite ^/(.*)/$ /$1 permanent;
}

rewrite指令用于重写请求URI。上面的例子定义了一个location,它将匹配所有以/结尾的URI,并将其重写为不以/结尾的URI,并使用HTTP 301永久重定向。例如,/test/将被重写为/test

TCP/UDP指令
stream
stream {
    upstream backend {
        server backend1.example.com:12345;
        server backend2.example.com:12345;
    }
    server {
        listen        123;
        proxy_pass    backend;
        proxy_timeout 3s;
    }
}

stream指令用于定义一个TCP/UDP服务器块,用来处理传输层协议。上面的例子定义了一个TCP服务器块,它监听123端口,并将请求转发给backend上游服务器群组,如果超过3秒未响应,则返回超时错误。

upstream
stream {
    upstream backend {
        server backend1.example.com:12345;
        server backend2.example.com:12345;
    }
}

upstream指令用于定义一个上游服务器群组。上面的例子定义了一个名称为backend的上游服务器群组,包含两个服务器backend1.example.com:12345backend2.example.com:12345

server
stream {
    upstream backend {
        server backend1.example.com:12345;
        server backend2.example.com:12345;
    }
    server {
        listen        123;
        proxy_pass    backend;
    }
}

server指令用于定义一个TCP/UDP服务器,它必须包含在stream块中。上面的例子定义了一个监听123端口的TCP服务器,它将请求转发给backend上游服务器群组。

安全指令
ssl_certificate
server {
    listen              443 ssl;
    server_name         example.com;
    ssl_certificate     /etc/nginx/certs/example.com.crt;
    ssl_certificate_key /etc/nginx/certs/example.com.key;
}

ssl_certificate指令用于指定SSL证书文件的路径。上面的例子定义了一个监听443端口的HTTPS服务器,它将使用/etc/nginx/certs/example.com.crt证书文件和/etc/nginx/certs/example.com.key私钥文件来建立加密连接。

ssl_protocols
server {
    listen              443 ssl;
    server_name         example.com;
    ssl_certificate     /etc/nginx/certs/example.com.crt;
    ssl_certificate_key /etc/nginx/certs/example.com.key;
    ssl_protocols       TLSv1.2 TLSv1.3;
}

ssl_protocols指令用于指定SSL/TLS协议的版本。上面的例子定义了一个支持TLSv1.2和TLSv1.3协议的HTTPS服务器。

ssl_ciphers
server {
    listen              443 ssl;
    server_name         example.com;
    ssl_certificate     /etc/nginx/certs/example.com.crt;
    ssl_certificate_key /etc/nginx/certs/example.com.key;
    ssl_protocols       TLSv1.2 TLSv1.3;
    ssl_ciphers         ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256;
}

ssl_ciphers指令用于指定SSL/TLS加密算法。上面的例子定义了一个使用ECDHE-RSA-AES128-GCM-SHA256和ECDHE-ECDSA-AES128-GCM-SHA256算法的HTTPS服务器。

其他指令
worker_processes
worker_processes 4;

worker_processes指令用于指定NGINX的工作进程数。上面的例子定义了4个工作进程。

error_log
error_log /var/log/nginx/error.log;

error_log指令用于指定NGINX的错误日志文件路径。上面的例子定义了一个错误日志文件为/var/log/nginx/error.log

总结

本文介绍了一些常用的NGINX指令,以及它们的用法和一些例子。要注意,NGINX指令不仅包括HTTP指令,还包括TCP/UDP指令和安全指令等。程序员们可以根据自己的需求去学习和使用。