惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
Threat Research - Cisco Blogs
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
月光博客
月光博客
V
Vulnerabilities – Threatpost
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
S
Secure Thoughts
Microsoft Azure Blog
Microsoft Azure Blog
Blog — PlanetScale
Blog — PlanetScale
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
T
Tailwind CSS Blog
S
SegmentFault 最新的问题
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
云风的 BLOG
云风的 BLOG
The Last Watchdog
The Last Watchdog
L
LINUX DO - 热门话题
酷 壳 – CoolShell
酷 壳 – CoolShell
WordPress大学
WordPress大学
AWS News Blog
AWS News Blog
美团技术团队
G
Google Developers Blog
宝玉的分享
宝玉的分享
www.infosecurity-magazine.com
www.infosecurity-magazine.com
C
CXSECURITY Database RSS Feed - CXSecurity.com
Recent Commits to openclaw:main
Recent Commits to openclaw:main
I
InfoQ
小众软件
小众软件
Google DeepMind News
Google DeepMind News
P
Privacy & Cybersecurity Law Blog
Stack Overflow Blog
Stack Overflow Blog
Webroot Blog
Webroot Blog
D
DataBreaches.Net
IT之家
IT之家
PCI Perspectives
PCI Perspectives
人人都是产品经理
人人都是产品经理
Hacker News: Ask HN
Hacker News: Ask HN
L
LangChain Blog
SecWiki News
SecWiki News
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Cisco Blogs
T
Threatpost
P
Proofpoint News Feed
Y
Y Combinator Blog
Cloudbric
Cloudbric
T
Tor Project blog
量子位
博客园_首页
B
Blog
Hugging Face - Blog
Hugging Face - Blog
GbyAI
GbyAI
D
Darknet – Hacking Tools, Hacker News & Cyber Security

codeqihan的博客

现代化的开源终端-Tabby 基于Rust开发的编辑器-Edit ChatGPT Atlas使用体验 联通宽带改桥接 Chrony安装以及配置 电信跨网QoS ungoogled-chromium浏览器简介 npm的高性能替代品pnpm 使用markdownlint-cli格式化Markdown文件 使用unattended-upgrades自动更新软件包 Debian使用Backports源 压缩网页体积 Debian切换至Testing/Sid版本 2024年度总结 轻量级的探针-Beszel ai.robots.txt阻止AI爬虫 甲骨文圣何塞ARM测评 公共DOH收集 com又涨价了
Nginx的安装以及配置
codeqihan · 2025-04-12 · via codeqihan的博客

最近从Caddy迁移到了Nginx(原本是为了自动颁发和续签证书选择的,但现在已经改用自签证书,加上Nginx内存占用更低,性能更好,因此改用了Nginx),正好水一篇

简介

Nginx是一个高效的Web服务器或反向代理,也是目前使用率最高的Web服务器
Nginx采用多进程架构,Master进程负责创建和管理Worker进程,Worker进程负责处理请求。当有新的请求时,会由其中一个Worker进程处理。因为会创建多个Worker进程来处理请求,因此可以充分利用多核CPU来提高性能。

安装

这里通过Nginx的软件源来安装,可以使用最新的版本。也可以通过系统软件源来安装,sudo apt intsall nginx即可
首先安装安装过程中需要的软件包:

Debiansudo apt install curl gnupg2 ca-certificates lsb-release debian-archive-keyring
Ubuntusudo apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring

然后添加Nginx的GPG密钥:

1
2
curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

添加完成以后可以验证GPG密钥是否正确:

1
gpg --dry-run --quiet --no-keyring --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg

输出应该包含

1
2
3
pub   rsa2048 2011-08-19 [SC] [expires: 2027-05-24]
573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62
uid nginx signing key <[email protected]>

添加Nginx软件源(stable版本):
Debian:

1
2
3
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
https://nginx.org/packages/debian `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list

Ubuntu:

1
2
3
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
https://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list

如果想要安装mainline Nginx(一般情况下更推荐stable版本),可以改为:
Debian:

1
2
3
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
https://nginx.org/packages/mainline/debian `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list

Ubuntu:

1
2
3
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
https://nginx.org/packages/mainline/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list

之后提高Nginx软件源优先级,以让安装Nginx的时候优先使用Nginx软件源:

1
2
echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" \
| sudo tee /etc/apt/preferences.d/99nginx

最后安装Nginx:

1
2
sudo apt update
sudo apt install nginx

配置

安装完成以后就是配置了,安装完成以后,/etc/nginx/nginx.conf已经配置好了,可以直接使用,也可以根据个人情况进行配置。
网站配置文件位于 /etc/nginx/conf.d/*.conf(*代表任意,建议为网站域名),如果想要创建一个静态网站,配置大概是这样的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
server {
listen 80;
server_name example.com www.example.com;

root /var/www/example.com/html;
index index.html index.htm;

location / {
try_files $uri $uri/ /index.html;
}

error_log /var/log/nginx/example.com_error.log;
access_log /var/log/nginx/example.com_access.log;
}

其中,listen为需要监听的端口,例如这里是80端口,如果想要使用SSL,可以在后面添加 listen 443 ssl;(需要配置 ssl_certificatessl_certificate_key为证书的公钥和私钥的存储路径)

server_name为域名(这个配置文件配置了 example.comwww.example.com两个域名,需要根据个人进行修改)
root为静态页面目录(用于存储网站静态文件)
index为/路径所指定的文件(这里是index.html或index.htm,会先尝试index.html,失败以后再尝试index.htm)
location为路径匹配规则,这里让/路径匹配root目录中的文件,其中,$uri表示客户端请求Url的路径部分,例如 /about/images/logo.png。Nginx会尝试查找与$uri对应的文件。$uri/表示如果$uri是一个目录,Nginx会尝试查找该目录下的默认索引文件(例如这里是index.html)。
error_logaccess_log为错误日志和访问日志的存储路径(可以选择不存储,删除这段即可)

如果想要用于反向代理,可以参考我目前使用的:

1
2
3
4
5
6
7
8
9
10
11
12
13
server {
listen 443 ssl;
server_name example.com;

ssl_certificate /cert/example.com/certificate.pem;
ssl_certificate_key /cert/example.com/private.key;

location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}

这里通过Nginx反代了 http://127.0.0.1:8080,并将 Host头设置为当前域名(如果后端不需要主机名,可以删除),X-Real-IP设置为客户端IP以便后端读取(如果不需要可以删除)

配置完成以后可以通过 nginx -t检测语法是否正确,如果正确,可以通过 nginx -s reload重载配置,一般来说不会造成服务中断