Professional Documents
Culture Documents
作者: 阮一峰
日期: 2018年2月27日
一、HTTP 服务
Nginx 的最大作用,就是搭建一个 Web Server。有了容器,只要一行命令,服务器就架设好
了,完全不用配置。
上面命令的各个参数含义如下。
-d:在后台运行
-p :容器的80端口映射到127.0.0.2:8080
--rm:容器停止运行后,自动删除容器文件
--name:容器的名字为mynginx
首先,新建一个目录,并进入该目录。
$ mkdir nginx-docker-demo
$ cd nginx-docker-demo
$ mkdir html
<h1>Hello World</h1>
三、拷贝配置
修改网页文件还不够,还要修改 Nginx 的配置文件,否则后面没法加 SSL 支持。
$ mv nginx conf
现在可以把容器终止了。
四、映射配置目录
重新启动一个新的容器,这次不仅映射网页目录,还要映射配置目录。
浏览器访问 127.0.0.2:8080,如果能够看到网页,就说明本地的配置生效了。这时,可以把这
个容器终止。
五、自签名证书
现在要为容器加入 HTTPS 支持,第一件事就是生成私钥和证书。正式的证书需要证书当局
(CA)的签名,这里是为了测试,搞一张自签名(self-signed)证书就可以了。
上面命令的各个参数含义如下。
req:处理证书签署请求。
-x509:生成自签名证书。
-days 365:证书有效期为一年。
-keyout:新生成的私钥文件为当前目录下的example.key。
-out:新生成的证书文件为当前目录下的example.crt。
$ mkdir conf/certs
$ mv example.crt example.key conf/certs
六、HTTPS 配置
有了私钥和证书,就可以打开 Nginx 的 HTTPS 了。
server {
listen 443 ssl http2;
server_name localhost;
ssl on;
ssl_certificate /etc/nginx/certs/example.crt;
ssl_certificate_key /etc/nginx/certs/example.key;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
七、参考链接
Tips for deploying nginx(official image) with docker, by Mario Ponticello
How To Create a Self-Signed SSL Certificate for Nginx in Ubuntu 16.04, by Justin
Ellingwood
(完)
文档信息
版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
发表日期: 2018年2月27日