Nginx配置

安装Nginx

首先执行以下命令更新软件源

1
sudo apt update

更新完成后,安装Nginx

1
sudo apt install nginx

添加配置文件

首先确保你的子域名成功解析到了你的服务器上.可以ping一下你的子域名,如果

切换到/etc/nginx/sites-available目录下,创建一个新文件filename(根据你所要开启的服务来命名,比如网盘服务就叫pan),并且编辑该配置文件

1
vim pan

如果你只是配置一个反向代理,写入以下配置信息即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
server {
listen 80;
listen [::]:80; #启用IPv6
server_name server.example.com; #将域名更改为你的实际域名
access_log /var/log/nginx/access.log;

location / {
proxy_pass http://localhost:port; #将port更改为你的实际端口
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}

如果你拥有证书,则使用以下的配置文件

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
server {
listen 80;
listen [::]:80; #启用IPv6
server_name server.example.com; #将域名更改为你的实际域名
access_log /var/log/nginx/access.log;

# 全部http流量重定向到https
location / {
return 301 https://$host$request_uri;
}
}

server {
listen 443 ssl;
listen [::]:443 ssl;
server_name server.example.com; # 将域名更改为你的实际域名
access_log /var/log/nginx/access.log;

ssl_certificate <你实际的pem文件的路径>;
ssl_certificate_key <你实际的key文件的路径>;

location / {
proxy_pass http://localhost:port; #将端口更改为你的实际端口
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}

映射文件并准备重新加载Nginx

/etc/nginx/sites-available/下的配置文件添加一个链接,使/etc/nginx/sites-enabled/链接到你刚添加的配置文件

1
sudo ln -s /etc/nginx/sites-available/filename /etc/nginx/sites-enabled/

检查配置文件是否有效

1
sudo nginx -t

如果输出successful,则配置文件有效.如果输出failed,则配置文件有语法错误,检查你的配置文件是否正确.
配置文件有效后,使用如下命令重新加载Nginx

1
sudo nginx -s reload

使用一键脚本生成nginx配置文件

/etc/nginx/sites-available目录下创建一个脚本文件,添加以下内容:

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#!/bin/bash

# 提示用户输入文件名
echo "请输入要创建的配置文件名:"
read filename

# 检查用户是否输入了文件名
if [ -z "$filename" ]; then
echo "文件名不能为空!"
exit 1
fi

# 提示用户输入域名和端口
echo "请输入域名:"
read domain

echo "请输入代理的端口:"
read port

# 检查域名和端口是否为空
if [ -z "$domain" ] || [ -z "$port" ]; then
echo "域名和端口不能为空!"
exit 1
fi

# 创建Nginx配置文件
config_path="/etc/nginx/sites-available/$filename"

cat << EOF > "$config_path"
server {
listen 80;
listen [::]:80;
server_name $domain; #域名
access_log /var/log/nginx/access.log;

location / {
return 301 https://\$host\$request_uri;
}
}

server {
listen 443 ssl;
listen [::]:443 ssl;
server_name $domain; #域名
access_log /var/log/nginx/access.log;

ssl_certificate "你的证书文件的目录";
ssl_certificate_key "你的密钥文件的目录";

add_header Strict-Transport-Security "max-age=31536000";

location / {
proxy_pass http://localhost:$port; #端口
proxy_http_version 1.1;
proxy_set_header Upgrade \$http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host \$host;
proxy_cache_bypass \$http_upgrade;
}
}
EOF

# 在sites-enabled目录创建符号链接
ln -s "/etc/nginx/sites-available/$filename" "/etc/nginx/sites-enabled/"

# 检查Nginx配置是否正确
nginx -t
if [ $? -ne 0 ]; then
echo "Nginx配置错误,请检查配置文件!"
exit 1
fi

# 重新加载Nginx
nginx -s reload
if [ $? -eq 0 ]; then
echo "Nginx配置成功,已重新加载!"
else
echo "Nginx重载失败!"
exit 1
fi

使用chmod命令赋予可执行权限

1
chmod +x filename.sh

执行脚本,根据提示输入文件名,域名,希望代理的端口即可。


Nginx配置
https://blog.hasong.top/2024/07/01/Nginx配置/
Author
hasong
Posted on
July 1, 2024
Licensed under