Docker部署(五):Nginx and 反向代理配置

摘要

Docker部署(一):服务器架构

Docker部署(二):MySQL数据库

Docker部署(三):Apache Tomcat

Docker部署(四):Gogs

继前面的Docker部署, 本篇是服务器容器化系列的最后一篇, 给服务器配置Nginx接收所有的入站并反向代理到后端其他服务器上面去。

概念

Nginx——Ngine X, 是一款自由的、开源的、高性能HTTP服务器和反向代理服务器; 也是一个IMAP、POP3、SMTP代理服务器; 也就是说Nginx本身就可以托管网站 (类似于Tomcat一样), 进行Http服务处理, 也可以作为反向代理服务器使用。

代理?

一般代理分为正向代理和反向代理, 这里简单介绍一下, 详细了解请看知乎:反向代理为何叫反向代理?

  • 正向代理服务类似我们局域网内部的机器通过代理服务器发送请求到互联网上的服务器, 代理服务器一般作用在客户端。例如: 软件。我们的客户端在进行操作的时候, 我们使用的正是正向代理, 通过正向代理的方式, 在我们的客户端运行一个软件, 将我们的HTTP请求转发到其他不同的服务器端, 实现请求的分发。
  • 而反向代理是作用在服务器端,它在服务器端接收客户端的请求, 然后将请求分发给具体的服务器进行处理, 然后再将服务器的相应结果反馈给客户端。Nginx就是一个反向代理服务器软件。

Docker Nginx

nginx 容器创建

$ 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
  • nginx服务器静态资源目录: /usr/share/nginx/html
  • nginx 配置文件目录: /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 的配置文件之后,我们要让配置生效, 必须让 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的配置, 你的反向代理马上就生效了.

你可能感兴趣的:(Linux,Docker)