Docker 安装 nginx 并且配置反向代理遇到的坑

拉取docker nginx 容器就跳过了;

首先进行安装,,安装的时候使用
启动:

docker run --name nginx-dev -p 80:80 -d nginx 

其中
--name后跟你给容器取的名字,任意即可

-p后面跟端口映射规则,比如

18080:80表示把外部宿主机的18080映射到容器的80即可,容器内部使用80访问nginx,宿主机使用18080访问容器,

-d表示后台运行;

配置:
首先需要进入容器

docker exec -it nginx-dev bin/bash 	

切换到配置文件夹

cd etc/nginx/conf.d

安装vim

apt-get update
apt-get install vim

然后就可以对default.conf配置文件进行编辑了,编辑结束以后重启容器;

遇到的坑:
明明配置好了,但是却始终无法实现反向代理;
原因是,把常规配置nginx和docker的配置方法弄混淆了,docker相当于一个独立的系统,所以我使用回环地址的时候,并不会像我在外面使用nginx一样访问到对应的服务,而是在容器内部的回环地址,所以访问不到;
这里需要给出宿主机的具体host和port;
*错误代码如下 *

    server {
        listen       80;
        server_name  localhost;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        #error_page  404              /404.html;
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        location /user/ {  
            client_max_body_size  300m;   
            proxy_connect_timeout 300s;   
            proxy_send_timeout 300s;  
            proxy_read_timeout 300s;   
            proxy_pass   http://127.0.0.1:18081;   
        }

正确的写法:

    server {
        listen       80;
        server_name  localhost;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        #error_page  404              /404.html;
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        location /user/ {  
            client_max_body_size  300m;   
            proxy_connect_timeout 300s;   
            proxy_send_timeout 300s;  
            proxy_read_timeout 300s;   
            proxy_pass   http://47.121.23.142:18081;   
        }

这样请求——>宿主机p80端口——>被映射到docker容器的80端口——>容器80对应nginx服务器——>nginx监听80对请求进行转发——>转发到宿主机对应的地址和端口——>servlet

有理解错误的地方欢迎大佬指正;

挂载式的配置文件后续更新;太晚了睡觉;。。。。


挂载式配置文件配置方法(转自百度)

 docker run -id --name nginx-dev -p 80:80 -p 443:443 -v /data/docker-config/nginx:/etc/nginx/conf.d nginx

启动并挂载目录

要在 Docker Compose 中安装配置 Nginx 来实现 HTTPS 和反向代理,你可以按照以下步骤进行操作: 1. 首先,在你的项目目录下创建一个名为 `docker-compose.yml` 的文件,并添加以下内容: ```yaml version: '3' services: nginx: image: nginx ports: - 80:80 - 443:443 volumes: - ./nginx.conf:/etc/nginx/nginx.conf - ./certs:/etc/nginx/certs ``` 这将创建一个名为 `nginx` 的服务,并将容器的 80 和 443 端口映射到主机的相应端口。同时,我们将挂载一个自定义的 `nginx.conf` 配置文件和一个名为 `certs` 的文件夹用于存放 SSL/TLS 证书。 2. 在项目目录下创建一个名为 `nginx.conf` 的配置文件,并添加以下内容作为示例: ```nginx events {} http { server { listen 80; server_name example.com; location / { proxy_pass http://backend:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } server { listen 443 ssl; server_name example.com; ssl_certificate /etc/nginx/certs/cert.pem; ssl_certificate_key /etc/nginx/certs/key.pem; location / { proxy_pass http://backend:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } } ``` 这是一个简单的 Nginx 配置文件示例,其中设置了一个 HTTP 的反向代理和一个 HTTPS 的反向代理。你需要将 `example.com` 替换为你的域名,并将 SSL/TLS 证书文件 `cert.pem` 和 `key.pem` 放入 `certs` 文件夹中。 3. 在你的项目目录下创建一个名为 `certs` 的文件夹,并将正确的 SSL/TLS 证书文件放入其中。 4. 现在,你可以运行 `docker-compose up -d` 命令启动容器。 这样,Nginx 将通过反向代理将所有对于 `example.com` 的请求转发到名为 `backend` 的服务的 8000 端口上。同时,通过 HTTPS 访问时,Nginx 使用了提供的 SSL/TLS 证书来进行加密通信。 请注意,上述步骤只是一个示例,你可能需要根据你的实际需求进行修改和调整。希望这能帮到你!如果有任何进一步的问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值