首页 > 解决方案 > 将 nginx 默认端口映射到不同的端口

问题描述

嗨,我在 Redhat UBI Image 上运行 NGINX 服务器。我想在不同的端口上运行 nginx 服务器,比如端口 81。我已经对我的 dockerfile 和 nginx.conf 文件进行了更改并映射到端口 81。但是 nginx 没有启动端口 81。

有什么解决办法吗?

这是我的码头文件:

FROM registry.access.redhat.com/ubi8/ubi8-minimal


RUN microdnf --setopt=tsflags=nodocs install -y nginx procps net-tools ca-certificates dirmngr gnupg wget vim\
            && microdnf clean all \
            && rpm -q procps-ng

#COPY nginx.conf /etc/nginx/nginx.conf

#To start up NGINX 
EXPOSE 81

CMD ["nginx", "-g", "daemon off;"]

这是我已映射到端口 81 的 nginx.conf 文件,但我似乎无法让 nginx 在我的本地主机上工作

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    server {
        listen 81;
        server_name localhost 127.0.0.1;
        client_max_body_size 0;
        set  $allowOriginSite *;
        proxy_pass_request_headers on;
        proxy_pass_header Set-Cookie;


        #ENV_ACCESS_LOG
        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
        proxy_redirect off;
        proxy_buffering off;
        proxy_set_header Host            $host:$server_port;
        proxy_set_header X-Real-IP       $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass_header Set-Cookie;
        proxy_set_header X-Forwarded-Proto https;

    location /search/ {
         proxy_pass http://**********:8983/****/;   
    }
    location /test/ {
         proxy_pass http://*****:8080/****/;    
    }
     }
}

标签: dockernginxdockerfilenginx-reverse-proxy

解决方案


要将端口从容器映射到主机,您必须使用“--publish”(或“-p”)选项启动容器(参见https://docs.docker.com/engine/reference/commandline/运行/)。

在您的情况下,它应该是:

docker run -p 81:81 <your_image>

其中第一个“81”是您要用于从主机访问容器的端口,第二个“81”是 nginx 正在侦听容器的端口


推荐阅读