docs: 添加文章内容(2013 ~ 2023)
This commit is contained in:
152
docs/content/nginx-config-snippet.md
Normal file
152
docs/content/nginx-config-snippet.md
Normal 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/;
|
||||
}
|
||||
|
||||
...
|
||||
|
||||
}
|
||||
```
|
||||
|
||||
|
Reference in New Issue
Block a user