1
0

docs: 添加文章内容(2013 ~ 2023)

This commit is contained in:
2025-10-09 00:04:57 +08:00
parent 9a4f04e0c4
commit 49ac48892e
276 changed files with 10537 additions and 1 deletions

View File

@@ -0,0 +1,152 @@
---
title: Nginx 常用配置文件片段
date: 2025-03-15T22:57:21Z
lastmod: 2025-03-15T22:59:02Z
tags: [配置,Nginx,服务器,网站]
---
# Nginx 常用配置文件片段
## 宝塔单域名子目录站点
可直接在 “伪静态” 内填写;假设域名为 “www.example.com”。
```nginx
# 注意 alias 和 root 的区别
## 访问:`http://www.example.com/example_1/index.html`
## 实际:`/www/wwwroot/example_site/example_1/index.html`
## 注意:不要漏掉末尾的 `/`,以免产生目录穿越漏洞
location ^~ /example_1/ {
root /www/wwwroot/example_site;
# 可选默认与“server”中指定的一致
index index.php index.html;
# 启用 PHP仅在使用“root”时可用
include /www/server/nginx/conf/enable-php-74.conf;
}
## 访问:`http://www.example.com/example_2/index.html`
## 实际:`/www/wwwroot/example_site/example_2/index.html`
location ^~ /example_2/ {
alias /www/wwwroot/example_site/example_2/;
index index.php index.html;
}
```
`enable-php-74.conf` 文件中的内容(该文件自带,不需要创建或修改):
```nginx
location ~ [^/]\.php(/|$) {
try_files $uri =404;
fastcgi_pass unix:/tmp/php-cgi-74.sock;
fastcgi_index index.php;
include fastcgi.conf;
include pathinfo.conf;
}
```
## 负载均衡
```nginx
upstream example_servers {
server 192.168.1.101:8080 weight=30;
server 192.168.1.102:8080 weight=20;
server 192.168.1.103:8080 weight=10;
# weight 可选,表示权重,值越大则被分配到的几率越大
}
server {
listen 80;
server_name www.example.com;
location / {
proxy_pass http://example_servers;
}
}
```
## 禁止访问
禁止访问部分扩展名文件
```nginx
location ~ \.(conf|ini|php)$ {
deny all;
}
```
禁止访问目录
```nginx
location ^~ /example/ {
deny all;
}
```
## 添加跨域响应头
```nginx
location / {
# add_header 'Access-Control-Allow-Origin' '$http_origin';
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'OPTIONS, GET, POST';
add_header 'Access-Control-Allow-Headers' 'Cache-Control, Content-Type, User-Agent, X-Requested-With';
add_header 'Access-Control-Allow-Credentials' 'true';
if ($request_method = 'OPTIONS') {
return 204;
}
}
```
## 一个 server 配置多个域名
`server_name` 中以空格分隔多个域名:
```nginx
server {
listen 80;
server_name a.frost-zx.top b.frost-zx.top;
...
}
```
## 一个 server 配置多个类型的 SSL 证书
参考:[Module ngx_http_ssl_module](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_certificate)
注意:只有 OpenSSL 1.0.2 及以上版本支持
`ssl_certificate``ssl_certificate_key`,复制多一份,然后把路径修改为其他类型证书的路径:
```nginx
server {
listen 443 ssl;
server_name example.com;
ssl_certificate example.com.rsa.crt;
ssl_certificate_key example.com.rsa.key;
ssl_certificate example.com.ecdsa.crt;
ssl_certificate_key example.com.ecdsa.key;
...
}
```
## 域名重定向
```nginx
server {
...
if ($host ~ '^www.example.com') {
return 301 https://test.example.com/;
}
...
}
```