ubuntu安装Nginx
安装 Nginx
Nginx 在默认的 Ubuntu 源仓库中可用。想要安装它,运行下面的命令:
1 sudo apt update 2 sudo apt install nginx
一旦安装完成,Nginx 将会自动被启动。你可以运行下面的命令来验证它:
sudo systemctl status nginx
输出类似下面这样:
测试安装
想要测试你的 Nginx 是否安装成功,可以在你的浏览器中打开http://YOUR_IP
,你应该可以看到默认的 Nginx 加载页面,像下面这样:
Nginx 的配置文件目录
一般情况下, nginx 的配置目录要么是 /etc/nginx
,要么是 /usr/local/nginx/conf
。
如果不确定,可以通过如下命令找到配置文件:
sudo nginx -t
out:
Nginx 基本指令和错误解决
重启(用得最多,用来刷新配置文件的):
sudo nginx -s reload
关闭(重装 nginx 要关闭):
sudo nginx -s stop
重装后首次启动:
sudo nginx -c <nginx.conf 绝对路径>
Nginx 常用配置命令
下面的都默认写在 http 的 scope 里面。即:
http { include mime.types; default_type application/octet-stream; # 下面代码的容身之地 }
请求头 & 代理配置
具体说明懒得写了,总之,你不配置请求头可能会让别人的请求发生请求于错误;不配置代理会使得本地的服务器程序可能无法获取目标的真实 IP。
- 请求头配置:
add_header <key> <value>;
- 代理配置:
proxy_set_header <key> <value>;
如果你用 nginx 开了一个静态存储仓库,最好加入如下几句话,这里以 images 举例,在 http 或者 https 里面,写入:
server {
listen 443 ssl;
...
...
location /images/ {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'POST,GET,OPTIONS';
add_header 'Access-Control-Allow-Headers' 'Authorization';
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forward-For $remote_addr;
proxy_set_header X-real-ip $remote_addr;
root /home/;
autoindex on;
}
}
HTTP 配置
如果希望开网站或者起 http服务器,这个必须配置:
server {
listen 80;
listen [::]:80;
server_name kirigaya.cn;
root <index.html所在目录的绝对路径>;
charset utf-8;
# 重定向到https(没有https需求请去掉这句话)
rewrite ^(.*)$ https://kirigaya.cn;
# 默认请求的去处(一般是网站首页)
location {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'POST,GET,OPTIONS';
add_header 'Access-Control-Allow-Headers' 'Authorization';
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forward-For $remote_addr;
proxy_set_header X-real-ip $remote_addr;
root <index.html所在目录的绝对路径>;
index index.html;
try_files $uri $uri/ /index.html 404;
}
}
HTTPS 配置
只配置http会显得很丑,因为会出现不安全,如果有人进行请求拦截往你的网站加小广告或者破黑水,加上你是个网络安全小白,那就跳进黄河也洗不清了。所以配一个 HTTPS 吧少年,SSL证书反正也是免费的。
首先你的云服务器平台下载 SSL 证书并绑定到你现在的域名上,请保证你的当前域名DNS可解析(ping一下就知道了),然后只需要下载带 nginx
字眼的压缩包,然后解压后里面应该是有四个文件(里面会有一个 .pem
文件和一个 .key
文件),把它们 scp 到服务器上。然后写入如下配置:
server {
listen 443 ssl;
server_name kirigaya.cn;
root <index.html所在目录的绝对路径>;
index index.html index.htm;
ssl_certificate <xxx.pem 文件绝对路径>;
ssl_certificate_key <xxx.key 文件绝对路径>;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
}
gzip 压缩
这个会让你的网站访问速度更快,但是会稍微稍微增加一点点服务端和客户端的计算复杂。
gzip on;
# 启用 gzip 压缩的最小文件,小于设置值的文件将不会压缩
gzip_min_length 1k;
# gzip 压缩级别,1-9,数字越大压缩的越好,也越占用CPU时间
gzip_comp_level 3;
# 进行压缩的文件类型。javascript有多种形式,如果压缩超大文件浪费了你的服务器资源,可以考虑去除它们
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png video/mp4;
# 是否在http header中添加Vary: Accept-Encoding,建议开启
gzip_vary on;
# 设置压缩所需要的缓冲区大小
gzip_buffers 4 16k;
brotli 压缩
这个和 gzip
二选一, brotli
由 google 的小混蛋发明,性能比 gzip
更加优秀,可以参考我之前的博客:
有必要的杂项——超时、请求头大小
有的时候,对于请求参数很长的请求,可能会爆 header 的错,然后你还以为自己的 java 或者 go(抱歉,我不做 SSR)写错了,为了避免这种情况的发生,写入如下配置:
# 定义 MIME 类型的哈希表最大为 4096
types_hash_max_size 4096;
# 客户端请求头部的超时时间为 600 秒
client_header_timeout 600;
# 客户端请求体的超时时间为 600 秒
client_body_timeout 600;
# 客户端请求体最大为 110 兆字节
client_max_body_size 110m;
# 反向代理请求头哈希表的最大尺寸为 51200
proxy_headers_hash_max_size 51200;
# 反向代理请求头哈希表的桶尺寸为 6400
proxy_headers_hash_bucket_size 6400;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效