Docker部署(一):服务器架构
Docker部署(二):MySQL数据库
Docker部署(三):Apache Tomcat
Docker部署(四):Gogs
继前面的Docker部署, 本篇是服务器容器化系列的最后一篇, 给服务器配置Nginx接收所有的入站并反向代理到后端其他服务器上面去。
Nginx——Ngine X, 是一款自由的、开源的、高性能HTTP服务器和反向代理服务器; 也是一个IMAP、POP3、SMTP代理服务器; 也就是说Nginx本身就可以托管网站 (类似于Tomcat一样), 进行Http服务处理, 也可以作为反向代理服务器使用。
一般代理分为正向代理和反向代理, 这里简单介绍一下, 详细了解请看知乎:反向代理为何叫反向代理?
$ docker run --name=nginx -p 80:80 -v /app/nginx/www:/usr/share/nginx/html \
-v /app/nginx/conf.d:/etc/nginx/conf.d -d nginx
/usr/share/nginx/html
/etc/nginx/conf.d
我们这里通过Volume映射到了 /app/nginx
目录里面了; 以后如果要解析html 只要直接把文件上传到 /app/nginx/www
即可; 我们这里为了方便设置nginx的反向代理, 也把这个目录映射到 /app/nginx/conf.d
了; 所以我们必须手动创建一个nginx的配置文件,不然打开Chrome浏览器是无法访问到的.
$ vi /app/nginx/conf.d/default.conf
# 复制并粘贴下面的内容
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
创建完 nginx 的配置文件之后,我们要让配置生效, 必须让 nginx 加载conf.d 目录下面的配置.
$ docker exec -it nginx /etc/init.d/nginx reload
到这里,nginx就简单的配置完成了. 不过打开Chrome你会发现页面上只有 403 Forbidden
,这是因为 html 目录下面没有默认的index.html.所以~~
现在我们就可以来设置nginx反向代理了, 其实也非常的简单, 直接在它的配置文件下创建一个.conf
的配置就可以了.
$ vi /app/nginx/conf.d/gogs.conf
# 复制下面的并粘贴上去
server {
listen 80;
server_name 域名; # 把域名替换成你自己的
location / {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://ip:port; # 这里设置你要代理的ip+端口
}
}
保存文件之后, 需要更新一下nginx的配置, 你的反向代理马上就生效了.