📅  最后修改于: 2023-12-03 15:03:10.873000             🧑  作者: Mango
NGINX是一个高性能的Web服务器和反向代理服务器,它的配置文件主要由各种指令组成。这篇文章将介绍一些常用的NGINX指令,以及它们的用法和一些例子。
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 / {
try_files $uri $uri/ /index.html;
}
location
指令用于匹配请求URI,并定义处理请求的方式。上面的例子定义了一个location,它将匹配所有的请求URI。try_files
指令将尝试查找请求URI对应的文件,如果找到则直接返回文件内容,否则将返回index.html
文件的内容。
location / {
rewrite ^/(.*)/$ /$1 permanent;
}
rewrite
指令用于重写请求URI。上面的例子定义了一个location,它将匹配所有以/
结尾的URI,并将其重写为不以/
结尾的URI,并使用HTTP 301永久重定向。例如,/test/
将被重写为/test
。
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秒未响应,则返回超时错误。
stream {
upstream backend {
server backend1.example.com:12345;
server backend2.example.com:12345;
}
}
upstream
指令用于定义一个上游服务器群组。上面的例子定义了一个名称为backend
的上游服务器群组,包含两个服务器backend1.example.com:12345
和backend2.example.com:12345
。
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
上游服务器群组。
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
私钥文件来建立加密连接。
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服务器。
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 4;
worker_processes
指令用于指定NGINX的工作进程数。上面的例子定义了4个工作进程。
error_log /var/log/nginx/error.log;
error_log
指令用于指定NGINX的错误日志文件路径。上面的例子定义了一个错误日志文件为/var/log/nginx/error.log
。
本文介绍了一些常用的NGINX指令,以及它们的用法和一些例子。要注意,NGINX指令不仅包括HTTP指令,还包括TCP/UDP指令和安全指令等。程序员们可以根据自己的需求去学习和使用。