【笔记】使用docker搭建nginx并配置反向代理

安装docker并运行:

<span class="token punctuation">[</span>root@localhost ~<span class="token punctuation">]</span> <span class="token punctuation">[</span>root@localhost ~<span class="token punctuation">]</span>
<span class="token punctuation">[</span>root@localhost ~<span class="token punctuation">]</span> <span class="token punctuation">[</span>root@localhost ~<span class="token punctuation">]</span> 
[root@localhost ~] [root@localhost ~]

查看镜像库,没有nginx的可以用docker pull nginx获取镜像。

<span class="token punctuation">[</span>root@localhost ~<span class="token punctuation">]</span> REPOSITORY TAG IMAGE ID CREATED SIZE <span class="token punctuation">[</span>root@localhost ~<span class="token punctuation">]</span> Using default tag: latest latest: Pulling from library/nginx e5ae68f74026: Pull complete 21e0df283cd6: Pull complete ed835de16acd: Pull complete 881ff011f1c9: Pull complete 77700c52c969: Pull complete 44be98c0fab6: Pull complete Digest: sha256:9522864dd661dcadfd9958f9e0de192a1fdda2c162a35668ab6ac42b465f0603 Status: Downloaded newer image <span class="token keyword">for</span> nginx:latest docker.io/library/nginx:latest <span class="token punctuation">[</span>root@localhost ~<span class="token punctuation">]</span> REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest f652ca386ed1 <span class="token number">2</span> weeks ago 141MB
<span class="token punctuation">[</span>root@localhost ~<span class="token punctuation">]</span> REPOSITORY TAG IMAGE ID CREATED SIZE <span class="token punctuation">[</span>root@localhost ~<span class="token punctuation">]</span> Using default tag: latest latest: Pulling from library/nginx e5ae68f74026: Pull complete 21e0df283cd6: Pull complete ed835de16acd: Pull complete 881ff011f1c9: Pull complete 77700c52c969: Pull complete 44be98c0fab6: Pull complete Digest: sha256:9522864dd661dcadfd9958f9e0de192a1fdda2c162a35668ab6ac42b465f0603 Status: Downloaded newer image <span class="token keyword">for</span> nginx:latest docker.io/library/nginx:latest <span class="token punctuation">[</span>root@localhost ~<span class="token punctuation">]</span> REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest f652ca386ed1 <span class="token number">2</span> weeks ago 141MB 
[root@localhost ~] REPOSITORY TAG IMAGE ID CREATED SIZE [root@localhost ~] Using default tag: latest latest: Pulling from library/nginx e5ae68f74026: Pull complete 21e0df283cd6: Pull complete ed835de16acd: Pull complete 881ff011f1c9: Pull complete 77700c52c969: Pull complete 44be98c0fab6: Pull complete Digest: sha256:9522864dd661dcadfd9958f9e0de192a1fdda2c162a35668ab6ac42b465f0603 Status: Downloaded newer image for nginx:latest docker.io/library/nginx:latest [root@localhost ~] REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest f652ca386ed1 2 weeks ago 141MB

使用nginx镜像来创建nginx容器

<span class="token punctuation">[</span>root@localhost ~<span class="token punctuation">]</span> 345d45dd2894ed81598bd15c62bf43c0c12f709ab13d904a31b2c0e39c99853c
<span class="token punctuation">[</span>root@localhost ~<span class="token punctuation">]</span> 345d45dd2894ed81598bd15c62bf43c0c12f709ab13d904a31b2c0e39c99853c 
[root@localhost ~] 345d45dd2894ed81598bd15c62bf43c0c12f709ab13d904a31b2c0e39c99853c
  • -d:在后台运行
  • -p: 端口进行映射,将本地 8080 端口映射到容器内部的 80 端口
  • –rm:容器停止运行后,自动删除容器文件
  • –name nginx-test:容器的名字,自己定义

然后就可以通过80端口访问nginx了.
Welcome to nginx!
现在本地创建一个nginx文件夹,注意{}中不能有空格。

<span class="token punctuation">[</span>root@localhost ~<span class="token punctuation">]</span> <span class="token punctuation">[</span>root@localhost ~<span class="token punctuation">]</span> html logs
<span class="token punctuation">[</span>root@localhost ~<span class="token punctuation">]</span> <span class="token punctuation">[</span>root@localhost ~<span class="token punctuation">]</span> html logs 
[root@localhost ~] [root@localhost ~] html logs

查看启动的Nginx运行状态:

<span class="token punctuation">[</span>root@localhost ~<span class="token punctuation">]</span> CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 345d45dd2894 nginx <span class="token string">"/docker-entrypoint.…"</span> <span class="token number">7</span> minutes ago Up <span class="token number">7</span> minutes <span class="token number">0.0</span>.0.0:80-<span class="token operator">></span><span class="token number">80</span>/tcp, :::80-<span class="token operator">></span><span class="token number">80</span>/tcp nginx-test
<span class="token punctuation">[</span>root@localhost ~<span class="token punctuation">]</span> CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 345d45dd2894 nginx <span class="token string">"/docker-entrypoint.…"</span> <span class="token number">7</span> minutes ago Up <span class="token number">7</span> minutes <span class="token number">0.0</span>.0.0:80-<span class="token operator">></span><span class="token number">80</span>/tcp, :::80-<span class="token operator">></span><span class="token number">80</span>/tcp nginx-test 
[root@localhost ~] CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 345d45dd2894 nginx "/docker-entrypoint.…" 7 minutes ago Up 7 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp nginx-test

把容器里面的 Nginx 配置文件拷贝到本地

<span class="token punctuation">[</span>root@localhost ~<span class="token punctuation">]</span> <span class="token punctuation">[</span>root@localhost ~<span class="token punctuation">]</span> html logs nginx <span class="token punctuation">[</span>root@localhost ~<span class="token punctuation">]</span> <span class="token punctuation">[</span>root@localhost ~<span class="token punctuation">]</span> conf.d fastcgi_params mime.types modules nginx.conf scgi_params uwsgi_params
<span class="token punctuation">[</span>root@localhost ~<span class="token punctuation">]</span> <span class="token punctuation">[</span>root@localhost ~<span class="token punctuation">]</span> html logs nginx <span class="token punctuation">[</span>root@localhost ~<span class="token punctuation">]</span> <span class="token punctuation">[</span>root@localhost ~<span class="token punctuation">]</span> conf.d fastcgi_params mime.types modules nginx.conf scgi_params uwsgi_params 
[root@localhost ~] [root@localhost ~] html logs nginx [root@localhost ~] [root@localhost ~] conf.d fastcgi_params mime.types modules nginx.conf scgi_params uwsgi_params

配置反向代理,配置好后保存

<span class="token punctuation">[</span>root@localhost ~<span class="token punctuation">]</span> server <span class="token punctuation">{<!-- --></span> listen <span class="token number">80</span><span class="token punctuation">;</span> listen <span class="token punctuation">[</span>::<span class="token punctuation">]</span>:80<span class="token punctuation">;</span> server_name <span class="token number">10.102</span>.10.240<span class="token punctuation">;</span> location / <span class="token punctuation">{<!-- --></span> root /usr/share/nginx/html<span class="token punctuation">;</span> index index.html index.htm<span class="token punctuation">;</span> <span class="token punctuation">}</span> location /api/ <span class="token punctuation">{<!-- --></span> proxy_pass http://192.168.0.100:8080/api/<span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">..</span><span class="token punctuation">..</span><span class="token punctuation">..</span>
<span class="token punctuation">[</span>root@localhost ~<span class="token punctuation">]</span> server <span class="token punctuation">{<!-- --></span> listen <span class="token number">80</span><span class="token punctuation">;</span> listen <span class="token punctuation">[</span>::<span class="token punctuation">]</span>:80<span class="token punctuation">;</span>  server_name <span class="token number">10.102</span>.10.240<span class="token punctuation">;</span>  location / <span class="token punctuation">{<!-- --></span> root /usr/share/nginx/html<span class="token punctuation">;</span> index index.html index.htm<span class="token punctuation">;</span> <span class="token punctuation">}</span>  location /api/ <span class="token punctuation">{<!-- --></span> proxy_pass http://192.168.0.100:8080/api/<span class="token punctuation">;</span> <span class="token punctuation">}</span>  <span class="token punctuation">..</span><span class="token punctuation">..</span><span class="token punctuation">..</span> 
[root@localhost ~] server { listen 80; listen [::]:80; server_name 10.102.10.240; location / { root /usr/share/nginx/html; index index.html index.htm; } location /api/ { proxy_pass http://192.168.0.100:8080/api/; } ......

配置生效后,所有/api/开头的地址都会被重定向到设置的地址。
例如访问http://10.102.10.240/api/test.txt,会返回http://192.168.0.100:8080/api/test.txt的内容。

停止之前创建的容器,重新新建一个容器并映射目录。

<span class="token punctuation">[</span>root@localhost ~<span class="token punctuation">]</span> nginx-test <span class="token punctuation">[</span>root@localhost ~<span class="token punctuation">]</span> 7fd5ee130f570748d6f21f01586efacd46ce40a3cbf4a952e095f32de4332ca3
<span class="token punctuation">[</span>root@localhost ~<span class="token punctuation">]</span> nginx-test <span class="token punctuation">[</span>root@localhost ~<span class="token punctuation">]</span> 7fd5ee130f570748d6f21f01586efacd46ce40a3cbf4a952e095f32de4332ca3 
[root@localhost ~] nginx-test [root@localhost ~] 7fd5ee130f570748d6f21f01586efacd46ce40a3cbf4a952e095f32de4332ca3

如果修改了配置文件,需要重新启动一下服务:

docker <span class="token builtin class-name">exec</span> -it nginx-web nginx -s reload
docker <span class="token builtin class-name">exec</span> -it nginx-web nginx -s reload 
docker exec -it nginx-web nginx -s reload

原文链接:https://blog.csdn.net/zouxiong122/article/details/121992786

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享