2

我在 y 服务器上运行了这两个 docker:

docker-registry:5000/library/nginx:1.7.10.1哪些端口是443/tcp, 0.0.0.0:3010->80/tcp

docker-registry:5000/library/java:8-jre哪些端口是0.0.0.0:9090->8080/tcp

我想做的是将所有请求响应/api/到以 java docker 开头的 Nginx 服务器。所以,我为我的 Nginx docker 使用了一个配置文件,如下所示:

服务器 {
    听 80 default_server;
    听 [::]:80 默认服务器;
    根 /opt/www;
    server_name localhost some_ip_address some_other_ip_address ;
    gzip打开;
    gzip_types
        应用程序/八位字节流
        应用程序/原子+xml
        应用程序/x-javascript
        应用程序/javascript
        应用程序/json
        应用程序/rss+xml
        应用程序/vnd.ms-fontobject
        应用程序/x-font-ttf
        应用程序/x-web-app-manifest+json
        应用程序/xhtml+xml
        应用程序/xml
        字体/opentype
        图片/svg+xml
        图像/x-icon
        文本/CSS
        文本/纯文本
        文本/x 组件;

    位置 ~ ^/(api)/ {
        proxy_set_header 主机 $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://simorgh-java:8080;
    }
}

但是,当我从浏览器向我的 Nginx 服务器发送发送请求时,我的 Nginx 服务器包含/api/URL(如http://path_to_my_server:3010/api/login),我得到 404 Not Found 响应。

我的配置文件有什么问题吗?我基本上使用了错误的解决方案吗?我应该怎么做才能解决这个问题?

原因(通过 nginx 服务器有一个到 java 服务器的代理路径)是我只有一个端口在我的服务器上打开,所有请求都应该通过它接收。

4

1 回答 1

1

检查它们是否链接在一起,默认情况下它们不能互相看到。

docker inspect <your container> | grep Links

你可以在 nginx 中使用 rewrite

使用 Nginx 创建临时和永久重定向

于 2017-09-22T17:58:16.070 回答