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.hostrequest_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://hostrequest_uri;
}
部分内容转载修改自:
Nginx Cheatsheet (hashnode.dev)
Nginx日志配置详解_biubiuli的博客-CSDN博客_nginx 日志配置