Nginx-常用配置详解

常用配置清单

1.侦听端口

#配置服务器监听的端口和协议
server {
# 监听标准的 HTTP 协议的 80 端口
listen 80;
# 监听标准的 HTTPS 协议的 443 端口,并启用 SSL 加密
listen 443 ssl;
# 监听标准的 HTTPS 协议的 443 端口,并启用 SSL 加密以及 HTTP/2 协议
listen 443 ssl http2;
# 通过 IPv6 监听标准的 HTTP 协议的 80 端口
listen [::]:80;
# 通过 IPv6 监听标准的 HTTP 协议的 80 端口,并设置为只接受 IPv6 请求
listen [::]:80 ipv6only=on;
}

2. 访问日志

server {
# 配置nginx服务器的访问日志记录到指定的文件中
access_log /path/to/file.log;
# 启用默认的访问日志记录,日志将会被记录在nginx的默认日志路径中。通常情况下,nginx会将访问日志记录在/var/log/nginx/access.log或者类似的位置上  
access_log on;
}

3. 域名

server {
# 监听 yourdomain.com 这个域名
server_name yourdomain.com;
# 监听 yourdomain.com 和 www.yourdomain.com 这两个域名
# 通配符 * 表示匹配所有 yourdomain.com 的子域名
server_name *.yourdomain.com;
# 监听所有以 yourdomain. 开头的顶级域名
server_name yourdomain.*;
# 设置为空字符串,表示服务器将会监听未指定域名的请求,即直接通过 IP 地址访问
server_name "";
}

4. 静态资源

server {
listen 80;
server_name yourdomain.com;
location / {
  #根路径的请求映射到 /path/to/website 目录下的文件
 root /path/to/website;
}
}

5. 重定向

server {
#指定服务器监听标准的 HTTP 协议的 80 端口  
listen 80;
#定义了服务器监听的域名为 www.yourdomain.com
server_name www.yourdomain.com;
# 当收到来自 www.yourdomain.com 的请求时,使用 301 永久重定向状态码将请求重定向到 http://yourdomain.com,并保留原始请求中的 URI(通过 $request_uri 变量)
return 301 http://yourdomain.com$request_uri;
}
server {
#指定服务器监听标准的 HTTP 协议的 80 端口  
listen 80;
#定义了服务器监听的域名为 www.yourdomain.com
server_name www.yourdomain.com;
# 在这里,对于 URI 为 /redirect-url 的请求,服务器会返回 301 永久重定向状态码,并将请求重定向到 http://otherdomain.com。
location /redirect-url {
return 301 http://otherdomain.com;
}
}

6. 反向代理

server {
listen 80;
server_name yourdomain.com;
# 这个 location 块指示对所有请求的代理转发  
# 当收到针对 yourdomain.com 的请求时,
# nginx 会将这些请求通过代理传递给地址为 
# http://0.0.0.0:3000 的应用程序服务器
location / {
proxy_pass http://0.0.0.0:3000;
# where 0.0.0.0:3000 is your application server (Ex: node.js) bound on 0.0.0.0 listening on port 3000
}
}

7.负载均衡

# 定义了一个名为 "node_js" 的 upstream,其中列出了多个应用程序服务器的地址
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 yourdomain.com;
# 代理转发将请求转发给名为 "node_js" 的 upstream
location / {
proxy_pass http://node_js;
}
}

8. SSL协议

server {
# 定义监听标准的 HTTPS 协议的 443 端口
listen 443 ssl;
# 定义了服务器监听的域名
server_name yourdomain.com;
# 启用 SSL/TLS 
ssl on;
# 指定了 SSL 证书和私钥的位置  
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/privatekey.pem;
# 启用 OCSP Stapling 并进行验证
ssl_stapling on;
ssl_stapling_verify on;
# 指定了 SSL 证书链的位置
ssl_trusted_certificate /path/to/fullchain.pem;
# 指定了允许使用的 SSL/TLS 协议版本
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
# 配置了 SSL 会话的超时时间和缓存设置
ssl_session_timeout 1h;
ssl_session_cache shared:SSL:50m;
# 通过 HTTP 响应头添加了严格传输安全(HSTS)策略,要求客户端始终通过 HTTPS 访问该站点
add_header Strict-Transport-Security max-age=15768000;
}

# HTTP 到 HTTPS 的永久性重定向配置块:
server 
{
listen 80;
server_name yourdomain.com;
 # 所有 HTTP 请求永久性重定向到相同的请求地址,但使用 HTTPS 协议
return 301 https://$host$request_uri;
}
举报
评论 0