标签:
在Docker下部署Nginx,包括:
proxy_pass
将HTTP请求反向代理到nodejs Web App如果你还没有安装Docker环境,可参考在Docker中运行Node.js的Web应用。
命令如下:
1
|
$ sudo docker run -it -p 80:80 dockerfile/nginx
|
如果是第一次,下载nginx镜像需要点时间。
然后,可以通过浏览器根据地址访问到一个默认的网页,说明Nginx成功跑起来了。
Nginx有2个日志:
运行如下命令:
1
|
$ sudo docker run -it -p 80:80 -v `pwd`/logs:/var/log/nginx dockerfile/nginx
|
这个命令会在当前目录下创建logs目录,存放access.log和error.log。
需要创建目录:
server
,Nginx静态网站配置文件index.html
server文件:
1
|
server {
|
命令如下:
1
|
sudo docker run -it -p 80:80 -v `pwd`/www:/www -v `pwd`/config:/etc/nginx/sites-enabled -v `pwd`/logs:/var/log/nginx dockerfile/nginx
|
解释一下:
-v
pwd/www:/www
,将当前路径下的www
目录设置为/www
,和server
配置的路径对应-v
pwd/config:/etc/nginx/sites-enabled
,server
文件的本地路径,映射到docker容器的nginx配置路径需要先能将Nodejs的容器跑起来,然后再考虑怎样通过Nginx的反向代理。
假设我有个express.js
项目,在当前目录下的webapp
目录中,使用docker
命令类似这样:
1
|
sudo docker run -d -p 3000:3000 --name ProtoWebApp -v `pwd`/webapp:/webapp -w /webapp node npm start
|
然后,将前面例子中config
目录下的server
文件做点改动:
1
|
server {
|
之后,用下面的命令将nginx跑起来:
1
|
sudo docker run -it -p 80:80 --link ProtoWebApp:localhost -v `pwd`/config:/etc/nginx/sites-enabled -v `pwd`/logs:/var/log/nginx dockerfile/nginx
|
只需在运行nginx容器的时候设置SSL的路径:-v <certs-dir>:/etc/nginx/certs
。
当然,nginx首先要设置,参见配置HTTPS服务器
标签:
原文地址:http://www.cnblogs.com/Leo_wl/p/5914741.html