我在DigitalOcean Droplet上运行了两个容器。第一个容器是在端口9090上运行的REST api容器。第二个容器是一个ReactJS多级容器,其中Nginx在端口4500上运行.docker-compose文件是这样的:
version: '3'
services:
ubgrillmysql:
image: mysql:5.6
container_name: ubgrillmysql
environment:
- MYSQL_ROOT_PASSWORD=finder
- MYSQL_DATABASE=ubgrillData
- MYSQL_USER=ubgadmin
- MYSQL_PASSWORD=win(der90)Admin
volumes:
- /home/justicar/workspace/applications/data
networks:
- ubgrill_network
web:
image: ubgrill/web
container_name: web
depends_on:
- ubgrillmysql
environment:
- DATABASE_HOST=ubgrillmysql
- DATABASE_USER=ubgadmin
- DATABASE_PASSWORD=win(der90)Admin
- DATABASE_NAME=ubgrillData
- DATABASE_PORT=3306
ports:
- 9090:9090
networks:
- ubgrill_network
frontend:
image: ubgrill/frontend
container_name: frontend
build: ./src/main/ubgrill
depends_on:
- web
ports:
- 4500:80
networks:
- ubgrill_network
networks:
ubgrill_network:
external:
我已经在我的Droplet上安装了nginx,因为我打算将来在那里转移我的博客。我使用mu droplet的域名创建了一个服务器块,并存储在/ etc / nginx / sites中,名称为<domain>.com
。该文件如下:
upstream ubgrillapi{
server localhost:9090;
}
upstream ubgrillapp{
server localhost:4500;
}
server {
listen 80;
listen [::]:80;
root /var/www/<domain>.com/html;
index index.html index.htm;
server_name <domain>.com www.<domain>.com;
location / {
try_files $uri $uri/ =404;
}
location /ubgrill/api/ {
proxy_pass http://ubgrillapi;
proxy_redirect off;
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-Host $server_name;
}
location /ubgrill/app/ {
proxy_pass http://ubgrillapp;
proxy_redirect off;
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-Host $server_name;
}
}
当我尝试访问http://<domain>.com/ubgrill/app
时,出现404(未找到)错误。 http://<domain>.com/ubgrill/api
也是如此。我可以在http://<domain>.com:4500
访问应用,在http://<domain>.com:9090/ubgrill/api
访问api( API实际上以/ ubgrill / api 开头)。我是nginx代理中的一个完整的菜鸟,在线教程都在一个单独的容器中处理nginx,这不是我的配置。我的配置有什么问题,请您指点一个关于nginx的更全面的教程?感谢。
答案 0 :(得分:0)
在nginx conf:
proxy_pass http://ubgrillapp;
http://nginx.org/en/docs/http/ngx_http_proxy_module.html
Nginx proxy_pass显示位置
location / {
proxy_pass http://localhost:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
(http://example.com:9090/ubgrill/api)
在你的情况下,我猜你应该把它设置为:
proxy_pass localhost:9090/ubgrill/api