


























最近从Caddy迁移到了Nginx(原本是为了自动颁发和续签证书选择的,但现在已经改用自签证书,加上Nginx内存占用更低,性能更好,因此改用了Nginx),正好水一篇
Nginx是一个高效的Web服务器或反向代理,也是目前使用率最高的Web服务器
Nginx采用多进程架构,Master进程负责创建和管理Worker进程,Worker进程负责处理请求。当有新的请求时,会由其中一个Worker进程处理。因为会创建多个Worker进程来处理请求,因此可以充分利用多核CPU来提高性能。
这里通过Nginx的软件源来安装,可以使用最新的版本。也可以通过系统软件源来安装,sudo apt intsall nginx即可
首先安装安装过程中需要的软件包:
| Debian | sudo apt install curl gnupg2 ca-certificates lsb-release debian-archive-keyring |
| Ubuntu | sudo apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring |
然后添加Nginx的GPG密钥:
1 | curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \ |
添加完成以后可以验证GPG密钥是否正确:
1 | gpg --dry-run --quiet --no-keyring --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg |
输出应该包含
1 | pub rsa2048 2011-08-19 [SC] [expires: 2027-05-24] |
添加Nginx软件源(stable版本):
Debian:
1 | echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \ |
Ubuntu:
1 | echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \ |
如果想要安装mainline Nginx(一般情况下更推荐stable版本),可以改为:
Debian:
1 | echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \ |
Ubuntu:
1 | echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \ |
之后提高Nginx软件源优先级,以让安装Nginx的时候优先使用Nginx软件源:
1 | echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" \ |
最后安装Nginx:
1 | sudo apt update |
安装完成以后就是配置了,安装完成以后,/etc/nginx/nginx.conf已经配置好了,可以直接使用,也可以根据个人情况进行配置。
网站配置文件位于 /etc/nginx/conf.d/*.conf(*代表任意,建议为网站域名),如果想要创建一个静态网站,配置大概是这样的:
1 | server { |
其中,listen为需要监听的端口,例如这里是80端口,如果想要使用SSL,可以在后面添加 listen 443 ssl;(需要配置 ssl_certificate和 ssl_certificate_key为证书的公钥和私钥的存储路径)
server_name为域名(这个配置文件配置了 example.com和 www.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_log和access_log为错误日志和访问日志的存储路径(可以选择不存储,删除这段即可)
如果想要用于反向代理,可以参考我目前使用的:
1 | server { |
这里通过Nginx反代了 http://127.0.0.1:8080,并将 Host头设置为当前域名(如果后端不需要主机名,可以删除),X-Real-IP设置为客户端IP以便后端读取(如果不需要可以删除)
配置完成以后可以通过 nginx -t检测语法是否正确,如果正确,可以通过 nginx -s reload重载配置,一般来说不会造成服务中断
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。