nginx docker proxy_path 到服务器中的另一个 docker
nginx docker proxy_path to an other docker in the server
我在 y 服务器上运行了这两个 dockers:
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/
开头的 Nginx 服务器请求响应到 java docker。所以,我为我的 Nginx docker 使用了一个配置文件,如下所示:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /opt/www;
server_name localhost some_ip_address some_other_ip_address ;
gzip on;
gzip_types
application/octet-stream
application/atom+xml
application/x-javascript
application/javascript
application/json
application/rss+xml
application/vnd.ms-fontobject
application/x-font-ttf
application/x-web-app-manifest+json
application/xhtml+xml
application/xml
font/opentype
image/svg+xml
image/x-icon
text/css
text/plain
text/x-component;
location ~ ^/(api)/ {
proxy_set_header Host $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 服务器发送一个请求时,在 URL 中包含 /api/
(如 http://path_to_my_server:3010/api/login
),我收到 404 Not Found 响应。
我的配置文件有什么问题吗?我基本上使用错误的解决方案吗?我应该怎么做才能解决这个问题?
这样做的原因(有一个通过 nginx 服务器到 java 服务器的代理路径)是我只有一个在我的服务器上打开的端口,所有请求都应该通过那个端口接收。
查看它们是否链接在一起,默认情况下它们彼此看不到。
docker inspect <your container> | grep Links
你可以在 nginx 中使用 rewrite
我在 y 服务器上运行了这两个 dockers:
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/
开头的 Nginx 服务器请求响应到 java docker。所以,我为我的 Nginx docker 使用了一个配置文件,如下所示:
server { listen 80 default_server; listen [::]:80 default_server; root /opt/www; server_name localhost some_ip_address some_other_ip_address ; gzip on; gzip_types application/octet-stream application/atom+xml application/x-javascript application/javascript application/json application/rss+xml application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/svg+xml image/x-icon text/css text/plain text/x-component; location ~ ^/(api)/ { proxy_set_header Host $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 服务器发送一个请求时,在 URL 中包含 /api/
(如 http://path_to_my_server:3010/api/login
),我收到 404 Not Found 响应。
我的配置文件有什么问题吗?我基本上使用错误的解决方案吗?我应该怎么做才能解决这个问题?
这样做的原因(有一个通过 nginx 服务器到 java 服务器的代理路径)是我只有一个在我的服务器上打开的端口,所有请求都应该通过那个端口接收。
查看它们是否链接在一起,默认情况下它们彼此看不到。
docker inspect <your container> | grep Links
你可以在 nginx 中使用 rewrite