Lxn-Chan!

(~ ̄▽ ̄)→))* ̄▽ ̄*)o

我发现网上有关这个的教程都像有那什么大病一样,不是不全就是话都说不明白 ?_?
本文主要内容包括从纯净系统到配置好ssl的全过程,但不包括购买域名和配置服务器等基础操作。

配置

OS: 20.04.2 LTS (GNU/Linux 5.11.0-38-generic x86_64)
Nginx: 1.20.2

安装Nginx

本文中全部操作均在root账户下操作,若在非root账户下操作请自己加上sudo

首先参考Ubuntu 镜像使用帮助更换软件源为清华源。

然后安装必要依赖项:

1
2
apt update
apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring

安装GPG Key:

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

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

等待出现573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62(该值一定要完全匹配)后进入下一步。

添加软件源

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

安装Nginx:

1
2
3
4
5
6
7
apt update

# 若软件源添加成功则应在update的输出中看到如下信息
# Get:1 http://nginx.org/packages/ubuntu <version> InRelease [0 B]
# Get:2 http://nginx.org/packages/ubuntu <version>/nginx amd64 Packages [0 B]

apt install nginx

确认是否安装成功:

1
2
3
4
5
6
7
8
nginx -V

# 若输出如下内容则安装成功。
nginx version: nginx/1.20.2
built by gcc 11.2.0 (Ubuntu 11.2.0-7ubuntu2)
built with OpenSSL 1.1.1l 24 Aug 2021
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-g -O2 -ffile-prefix-map=/data/builder/debuild/nginx-1.20.2/debian/debuild-base/nginx-1.20.2=. -flto=auto -ffat-lto-objects -fstack-protector-strong -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fPIC' --with-ld-opt='-Wl,-Bsymbolic-functions -flto=auto -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -pie'

配置网站

切换到nginx配置文件目录

1
cd /etc/nginx/conf.d

新建配置文件

1
2
# 其中<name>随意起一个文件名即可
vim <name>.conf

配置文件格式/模板:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
   server {
# 监听端口
listen 80;
# 域名可以有多个,用空格隔开
server_name eg.a.com eg.b.com;
#location块
location / {
#网站文件根目录
root /var/www/nginx/egpages;
#默认文档
index index.html index.htm;
}
#错误页
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/nginx/egpages;
}
#拒绝的ip
#deny 127.0.0.1;
#允许的ip
#allow 172.18.5.54;
}

如果到此为止则可跳转至【运行】节。

SSL

修改刚才的配置文件

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
  server {
# 监听端口
listen 80;
# 域名,可以有多个,用空格隔开
server_name eg.a.com eg.b.com;
# HTTP 自动跳转 HTTPS
rewrite ^(.*)$ https://${server_name}$1 permanent;
#拒绝的ip
#deny 127.0.0.1;
#允许的ip
#allow 172.18.5.54;
}

server {
# 监听端口 HTTPS
listen 443 ssl;
# 域名
server_name eg.a.com;
# 根目录
root /var/www/nginx/eg-a;

# 配置域名证书,要确保路径存在
ssl_certificate /var/www/nginx/certs/eg-a/bundle.crt;
ssl_certificate_key /var/www/nginx/certs/eg-a/MyCert.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;

index index.html index.htm index.php;

# 图片缓存时间设置
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
expires 10d;
}

# JS和CSS缓存时间设置
location ~ .*\.(js|css)?$ {
expires 1h;
}

#拒绝的ip
#deny 127.0.0.1;
#允许的ip
#allow 172.18.5.54;
}

运行

测试配置文件

1
2
3
4
5
nginx -t

# 没问题的话会输出
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

重载

1
nginx -s reload

反向代理

把配置文件里面location段改一下就行

1
2
3
location / {
proxy_pass http://127.0.0.1:1234;
}

GZIP压缩

在nginx.conf里面改

1
2
3
4
5
6
7
8
9
# gzip模块设置
gzip on; #开启gzip压缩输出
gzip_min_length 1k; #允许压缩的页面的最小字节数,页面字节数从header偷得content-length中获取.默认是0,不管页面多大都进行压缩.建议设置成大于1k的字节数,小于1k可能会越压越大
gzip_buffers 4 16k; #表示申请4个单位为16k的内存作为压缩结果流缓存,默认值是申请与原始数据大小相同的内存空间来存储gzip压缩结果
gzip_http_version 1.1; #压缩版本(默认1.1,目前大部分浏览器已经支持gzip解压.前端如果是squid2.5请使用1.0)
gzip_comp_level 5; #压缩等级.1压缩比最小,处理速度快.9压缩比最大,比较消耗cpu资源,处理速度最慢,但是因为压缩比最大,所以包最小,传输速度快
gzip_types text/plain application/x-javascript text/css application/xml;
#压缩类型,默认就已经包含text/html,所以下面就不用再写了,写上去也不会有问题,但是会有一个warn.
gzip_vary on;#选项可以让前端的缓存服务器缓存经过gzip压缩的页面.例如:用squid缓存经过nginx压缩的数据

参考资料

 简单说两句


联系站长 | 隐私政策 | 用户协议

备案号:辽ICP备19013963-5号

萌ICP备 20219421 号

中国互联网违法和不良信息举报中心

架构版本号:6.5.1 | 本站已全面支持IPv6 |

正在载入运行数据(1/2)请稍后...
正在载入运行数据(2/2)请稍后...

Copyright 2021 LingXuanNing, All rights reserved.