参考
Nginx 配置文件
- nginx配置文件位置:
/etc/nginx/nginx.conf或/usr/local/nginx/conf/nginx.conf - nginx配置文件定义了各个块的配置,以及指令
worker_processes:定义了Nginx的工作进程数。http { ... }: 定义了HTTP协议相关的配置。可以在这里使用include指令来加载额外的配置文件,就是子配置文件- 子配置文件一般位于
/etc/nginx/conf.d/目录下(或其他由主配置文件中include指令指定的目录),以 .conf 结尾的文件名。 - 子配置文件一般在 http 上下文中定义的
server { ... }块
- 子配置文件一般位于
- 主配置文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20# /etc/nginx/nginx.conf
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
Nginx 配置文件示例
- 简单的HTTP配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22server {
# 监听80端口
listen 80;
location / {
# 指定静态页面的根目录
root /usr/share/nginx/html;
# 指定默认首页
index index.html;
# 按照指定的顺序检查文件是否存在,并根据结果处理请求。
# $uri:首先尝试将请求的URI直接映射到文件系统上的一个文件。例如,如果请求的是 /img/photo.png,Nginx会检查 /usr/share/nginx/html/img/photo.png 是否存在。
# $uri/:如果上述步骤失败(即找不到对应的文件),则尝试将其视为一个目录,并查找该目录下的默认索引文件(如由 index 指令指定的 index.html)。
try_files $uri $uri/ @rewrites;
}
location @rewrites {
rewrite ^(.+)$ /index.html last;
}
} - HTTPS配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34server {
listen 80;
server_name exwckv.top;
return 301 https://$host$request_uri; # 将所有HTTP请求重定向到HTTPS
}
server {
# 添加 ssl 参数表示通过此端口进行的所有通信都应使用SSL/TLS加密。需配置SSL证书和私钥文件的位置
listen 443 ssl;
# 用于定义虚拟主机(也称为基于名称的虚拟主机)所响应的域名或主机名
# 如果没有域名,可以省略 server_name 指令或者直接指定服务器的公网IP地址
# 当 Nginx 接收到一个请求时,它会根据 HTTP 请求头中的 Host 字段来匹配 server_name,从而确定使用哪个 server 块来处理该请求。
server_name exwckv.top;
ssl_certificate /etc/nginx/certs/fullchain.pem; # 指定SSL证书的位置
ssl_certificate_key /etc/nginx/certs/privkey.pem; # 指定SSL私钥的位置
location / {
root /usr/share/nginx/html;
index index.html;
try_files $uri $uri/ @rewrites;
}
location @rewrites {
rewrite ^(.+)$ /index.html last;
}
# 解决跨域问题(可选)
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
add_header Access-Control-Allow-Headers *;
}
nginx属性设置
server_name: 配置中用于定义虚拟主机(也称为基于名称的虚拟主机)所响应的域名或主机名。注意:多个模块都匹配时,按照:精确匹配->通配符匹配->正则匹配精确匹配:确切的域名,例如server_name example.com;通配符匹配: 通配符匹配,例如server_name *.example.com;正则匹配: 正则匹配需要在名称前面加上波浪线(~),例如server_name ~^(www\.)?example\.com$;默认服务器:没有其他 server_name 匹配时使用的服务器,可以在 listen 指令后添加 default_server 参数。例如,listen 80 default_server;。多域名支持:你还可以在一个 server_name 指令中列出多个域名,用空格分隔。例如,server_name example.com www.example.com;。这样,这两个域名都会指向同一个 server 块。
常用nginx指令
nginx -t: 检查配置文件是否有误nginx -s reload: 重载配置文件,不会重启服务器,只是重新加载配置文件,不会影响正在运行的服务