java每日精进 3.20 【内网无网络环境配置nginx转发】

1.难点

因为公司内网没有nginx以及gcc编译环境,so.......

  • 下载所需的 Nginx 包和依赖项:提前下载源码包、依赖包和编译工具。
  • 转移到内网环境:将下载的包和文件传输到没有网络的内网服务器。
  • 安装并配置:在内网环境中安装 Nginx 并配置服务。

直接安装nginx以及附属配置包,配置包又依赖gcc,gcc有一堆依赖,下载过于麻烦

2.利用docker安装nginx

2.1准备

2.1.1  docker-17.03.0-ce.tgz(版本无所谓)

Index of / (docker.com)

2.1.2  nginx.tar(在有网络环境下准备nginx的tar文件)

2.1.2.1. 安装 Docker

确保在有网络环境的系统上已经安装 Docker。如果没有安装,可以运行以下命令安装:

# 安装 Docker
sudo apt-get update
sudo apt-get install -y docker.io

# 启动 Docker 服务
sudo systemctl start docker
sudo systemctl enable docker

# 验证 Docker 是否安装成功
docker --version

2.1.2.2. 拉取 Nginx 镜像

从 Docker Hub 拉取官方的 Nginx 镜像:

docker pull nginx
拉取完成后,可以通过以下命令查看镜像:

docker images
 
 

输出示例:

REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
nginx        latest    4f380adfc10f   2 weeks ago    142MB

2.1.2.3. 保存镜像为 .tar 文件

使用 docker save 命令将 Nginx 镜像打包为 .tar 文件:

docker save -o nginx.tar nginx:latest
  • -o nginx.tar:指定输出的文件名为 nginx.tar

  • nginx:latest:指定要保存的镜像名称和标签。


2.1.2.4. 验证 .tar 文件

打包完成后,可以验证 .tar 文件是否生成成功:

ls -lh nginx.tar

在哪个目录下执行docker save -o nginx.tar nginx:latest

生成的tar包就在那个目录下

2.2 安装

2.2.1 解压docker

tar -xzvf docker-20.10.9.tgz
sudo cp docker/* /usr/bin/

2.2.2 启动 Docker 服务:

sudo dockerd &


2.2.3 验证 Docker 是否安装成功:


docker --version

你已经有了 nginx.tar 文件,这是 Docker 镜像的打包文件。你需要将其加载到 Docker 中。

  1. 加载镜像

    docker load -i nginx.tar
  2. 验证镜像是否加载成功

    docker images

    你应该能看到 nginx 镜像。

2.2.4. 启动 Nginx 容器

现在你可以使用加载的 Nginx 镜像启动一个容器。

  1. 启动 Nginx 容器

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

    这会在后台启动一个名为 my-nginx 的容器,并将宿主机的 80 端口映射到容器的 80 端口。

  2. 验证容器是否启动成功

    docker ps

    你应该能看到 my-nginx 容器正在运行。

  3. 访问 Nginx
    在浏览器中访问 http://<内网机器IP>,你应该能看到 Nginx 的欢迎页面。

2.2.5 设置nginx.conf

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
        }

        # 反向代理 DL-IVRS
        location /DL-IVRS/ {
            client_max_body_size 50M;
            proxy_connect_timeout 6000s;  
            proxy_send_timeout 6000s;   
            proxy_read_timeout 6000s;    
            proxy_pass http://10.100.53.112/DL-IVRS/video/tag/nsfw/file;
            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_set_header X-Forwarded-Proto $scheme;
        }

        # 反向代理 DL-IVRS/IS-CV/about
        location /DL-IVRS/IS-CV/about {
            client_max_body_size 50M;
            proxy_connect_timeout 6000s;  
            proxy_send_timeout 6000s;   
            proxy_read_timeout 6000s;    
            proxy_pass http://10.100.53.112/DL-IVRS/IS-CV/about;
            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_set_header X-Forwarded-Proto $scheme;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

将此配置文件传输到  /path/to/nginx.conf

启动容器

docker run -d --name my-nginx -p 80:80 -v /path/to/nginx.conf:/etc/nginx/nginx.conf nginx

测试:

猜你喜欢

转载自blog.csdn.net/weixin_51721783/article/details/146375820
今日推荐