Nginx是一款轻量级的Web服务器、反向代理服务器,由于它的内存占用少,启动极快,高并发能力强,在互联网项目中广泛应用。
#启动
docker run -d -p 80:80 -p 443:443 --name nginx-ssl -v /data/cert:/etc/nginx/cert nginx:1.23.1-alpine
# 进入容器
docker exec -it nginx-ssl sh
#/etc/nginx 安装目录
#/usr/share/nginx/html 站点目录
server.crt
和私钥文件server.key
。CRT 应该是 certificate 的三个字母,其实还是证书的意思。常见于 UNIX 系统,有可能是 PEM 编码,也有可能是 DER 编码,大多数应该是 PEM 编码。
server.key
和server.crt
拷贝到nginx的cert
目录下。或者启动容器时挂载在到
cert
目录下
# nginx容器目录
/etc/nginx # ls -l
total 36
drwxr-xr-x 6 root root 192 Nov 23 03:12 cert
drwxr-xr-x 1 root root 4096 Nov 23 02:38 conf.d
-rw-r--r-- 1 root root 1077 Jul 19 15:22 fastcgi.conf
-rw-r--r-- 1 root root 1007 Jul 19 15:22 fastcgi_params
-rw-r--r-- 1 root root 5349 Jul 19 15:22 mime.types
lrwxrwxrwx 1 root root 22 Oct 6 22:38 modules -> /usr/lib/nginx/modules
-rw-r--r-- 1 root root 648 Jul 19 15:22 nginx.conf
-rw-r--r-- 1 root root 636 Jul 19 15:22 scgi_params
-rw-r--r-- 1 root root 664 Jul 19 15:22 uwsgi_params
conf.d
目录下创建{ssl-name}.conf
文件。修改成如下参数:
#{ssl-name}.conf如下
server {
listen 443 ssl;
listen [::]:443 ssl; #ipv6
server_name www.domain.com; #用户服务器的域名
ssl_certificate cert/server.crt;
ssl_certificate_key cert/server.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on; #为了支持TLSv1 TLSv1.1老协议
location / {
root /usr/share/nginx/html; #站点目录
index index.html index.htm;
#proxy_pass http://127.0.0.1:8080; #反向代理到本服务器的8080端口
}
}
nginx -t
配置正确,回显信息如下所示:
nginx.conf syntax is ok
nginx.conf test is successful
# 查看当前配置
nginx -T
nginx -s reload
default.conf
修改成如下参数:
#default.conf如下
server {
listen 80;
listen [::]:80; #ipv6
server_name www.domain.com;
rewrite ^(.*)$ https://${server_name}$1 permanent;
}