1、监听端口
代码语言:javascript复制server {
# 用于HTTP协议
listen 80;
# 用于HTTPS协议
listen 443 ssl;
# 用于HTTP2
listen 443 ssl http2;
# 使用IPv6监听80端口
listen [::]:80;
# 仅使用IPv6
listen [::]:80 ipv6only=on;
}
2、日志功能
Nginx的日志分为两种:access_log (访问日志)和 error_log(错误日志)。
对于日志的格式,Nginx提供了一种名为 combine
的格式,如果没有明确指定日志格式则默认使用该格式。
如果不使用 combine
格式的话,可以使用 log_format
指令来自定义,其具体用法参考Nginx日志配置详解或者官方文档:HttpLog模块-Nginx中文文档。
2.1、访问日志
访问日志主要记录客户端的请求,客户端向Nginx服务器发起的每一次请求都记录在这里。客户端IP,浏览器信息,referer,请求处理时间,请求URL等都可以在访问日志中得到。
代码语言:javascript复制server {
# 访问日志文件的写入位置,相对或绝对路径
access_log /path/to/file.log;
# 选择访问日志功能的开启(on)或关闭(off)
access_log on;
}
2.2、错误日志
错误日志记录服务器和请求处理过程中的错误信息。
代码语言:javascript复制server{
# 错误日志的写入位置
error_log logs/error.log error;
# 错误日志的级别,分为 debug, info, notice, warn, error, crit, alert,emerg,其取值范围是按紧急程度从低到高排列
# 只有日志的错误级别等于或高于level指定的值才会写入错误日志中。默认值是error
error_log file [level];
}
3、配置域名
代码语言:javascript复制server {
# 监听domain.com
server_name domain.com;
# 监听多个域名
server_name domain.com www.domain.com;
# 监听所有域名
server_name *.domain.com;
# 监听所有顶级域名
server_name domain.*;
# 监听未指定的主机名(比如侦听IP地址本身)
server_name "";
}
4、静态资源
代码语言:javascript复制server {
listen 80;
server_name domain.com;
location / {
# 设置网站的根目录
root /path/to/website;
}
}
5、重定向
5.1、网站根目录重定向
代码语言:javascript复制server {
listen 80;
server_name www.domain.com;
# 将 www.domain.com 进行301重定向,跳转至 http://domain.com$request_uri
return 301 http://domain.com$request_uri;
}
5.2、特定目录重定向
代码语言:javascript复制server {
listen 80;
server_name www.domain.com;
# 将链接 http://www.domain.com/redirect-url 进行301重定向,跳转到http://otherdomain.com
location /redirect-url {
return 301 http://otherdomain.com;
}
}
如将 domain.com 永久重定向到 www.domain.com:
代码语言:javascript复制server {
listen 80;
server_name domain.com;
return 301 http://www.$host$request_uri;
}
6、反向代理
反向代理 - 维基百科,自由的百科全书 (wikipedia.org)
Reverse proxy - Wikipedia
代码语言:javascript复制server {
listen 80;
server_name domain.com;
# 对特定主机的3000端口进行反向代理
location / {
proxy_pass http://0.0.0.0:3000;
}
}
7、负载均衡
负载均衡 - 维基百科,自由的百科全书 (wikipedia.org)
Load balancing (computing) - Wikipedia
代码语言:javascript复制upstream node_js {
server 0.0.0.0:3000;
server 0.0.0.0:4000;
server 123.131.121.122;
}
server {
listen 80;
server_name domain.com;
location / {
proxy_pass http://node_js;
}
}
8、SSL配置
代码语言:javascript复制server {
listen 443 ssl;
server_name domain.com;
ssl on;
# 证书文件,格式不一定都是pem,还可能是其他格式
ssl_certificate /path/to/cert.pem;
# 秘钥文件,格式不一定都是pem,还可能是其他格式
ssl_certificate_key /path/to/privatekey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_session_timeout 1h;
ssl_session_cache shared:SSL:50m;
add_header Strict-Transport-Security max-age=15768000;
}
# 将HTTP永久重定向到HTTPS
server {
listen 80;
server_name domain.com;
return 301 https://$host$request_uri;
}
部分内容转载修改自: Nginx Cheatsheet (hashnode.dev) Nginx日志配置详解_biubiuli的博客-CSDN博客_nginx 日志配置