gpt4 book ai didi

docker - Nginx https发布docker-compose

转载 作者:行者123 更新时间:2023-12-02 19:21:36 25 4
gpt4 key购买 nike

我在使用https正确启动我的Web应用程序时遇到问题。当前,当尝试访问该站点时,请输入it looks like this with a 404 error

我的docker-compose.yml文件如下:

version: '3'
services:
nginx:
restart: always
image: nginx:latest
container_name: nginx
volumes:
- ./nginx.conf:/home/comas/COMAS/COMAS-Docker/nginx.conf
- ./ssl:/home/comas/COMAS/COMAS-Docker/certs/
ports:
- "80:80"
- "443:443"
- "5000:5000"
- "3000:3000"
networks:
- ephemeris-public
depends_on:
- api
- ephemeris-web
db:
restart: always
image: mysql:latest
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASS}
MYSQL_USER: ${MYSQL_USER_NAME}
MYSQL_PASS: ${MYSQL_USER_PASS}
MYSQL_DATABASE: ${MYSQL_DB_NAME}
volumes:
- db-datavolume:/var/lib/mysql
ports:
- "3306:3306"
networks:
- api
api:
image: localhost:6969/comas-api:latest
expose:
- "5000"
volumes:
- ${API_LOCATION}:/app
depends_on:
- db
networks:
- api
- ephemeris-public
ephemeris-web:
image: localhost:6969/ephemeris-ui:latest
command: npm start
expose:
- "443"
environment:
NODE_TLS_REJECT_UNAUTHORIZED: 0
NODE_ENV: 'production'
# volumes:
# - ${EPHEMERIS_UI_LOCATION}:/app
networks:
- ephemeris-public
depends_on:
- api
portainer:
image: portainer/portainer
restart: always
user: "${DOCKER_UID}:${DOCKER_GID}"
networks:
- ephemeris-public
ports:
- "9000:9000"
- "8000:8000"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- portainer_data:/portainer_data
volumes:
db-datavolume:
portainer_data:
networks:
ephemeris-public:
api:

我的 nginx.conf文件如下:
# Prints everything going wrong to standard error output
error_log stderr;

events {
worker_connections 4096; ## Default: 1024
}

http {
# Prints everything nginx is doing to standard output
access_log /dev/stdout;

# Location of the API
upstream docker-api {
server api:5000;
}

# Location of the Ephemeris interface
upstream docker-ephemeris-web {
server ephemeris-web:443;
}

# Grants access to ephemeris over port 443 (HTTPS)
server {
listen 443;
listen [::]:443;

ssl on;
ssl_certificate /home/comas/COMAS/nginx/bundle.crt;
ssl_certificate_key /home/comas/COMAS/nginx/ephermis.key;

root /var/www/html;
server_name ephemeris.ecrl.organization.edu;

location / {
try_files $uri $uri/ =404;
}
}

# Redirect to https(HTTPS)
server {
listen 80;
listen [::]:80;

server_name ephemeris.ecrl.organization.edu;
return 301 https://ephemeris.ecrl.organization.edu;
}

# Grants access to ephemeris over port 3000, its default port
server {
listen 443;

location / {
proxy_pass https://docker-ephemeris-web;
}
}

server {
listen 5000;
location / {
# Aight if we're being honest I just slapped everything on here until it worked, I'll fix it up later
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
proxy_pass https://docker-api;
proxy_ssl_session_reuse off;
proxy_ssl_verify off;
proxy_set_header Host $https_host;
proxy_set_header X_FORWARDED_PROTO https;
proxy_redirect off;
}
}
}

Here is a screenshot I took from log of nginx container from portainer:

这是我第一次做与docker,docker-compose或nginx相关的事情,所以我只是不确定自己哪里出错了。请让我知道,如果这篇文章中没有列出任何信息,可以帮助您找到解决方案。谢谢大家的时间。

最佳答案

您已经开始使用这些技术进行非常复杂的第一步。从简单开始并逐步增加复杂性可能会更容易,更好的学习体验。例如,首先从一个普通的nginx Docker容器开始,使其工作,然后更新nginx.conf并使https重定向工作。然后更新您的docker-compose以添加您的数据库并使它正常工作...依此类推,逐步,最后添加您自己的API,这本身是一个相当复杂的部分。从第一步这样复杂的配置开始,可以理解的是,如果不起作用,您将不知道要看哪些运动部件拼图。

我的猜测是,您将面临一系列问题,而每个新问题在修复前一个问题时都会暴露出来。

无论如何,从我看到的第一个开始。您已将nginx.conf映射到容器中:

- ./nginx.conf:/home/comas/COMAS/COMAS-Docker/nginx.conf

但是nginx对此一无所知。您正在使用的 The docs for the nginx Docker image显示(请参阅“复杂配置”),nginx服务器使用的 nginx.conf位于 /etc/nginx/nginx.conf。如果您想让nginx使用您的conf,则需要将其映射到此处:
- ./nginx.conf:/etc/nginx/nginx.conf

现在,您的conf被完全忽略了,而nginx只是很高兴地使用其默认的默认conf,而该conf却没有受到任何损坏,位于默认的默认位置。

解决此问题后,我怀疑您会遇到下一个问题。一些注意事项:
  • 从您的措辞来看,我认为您担心favicon.ico的404。每个浏览器都会自动查找a favicon,以显示在浏览器选项卡中。许多站点没有站点,因此您始终会在日志中看到针对这些请求的404。这没什么好担心的-除非您已经添加了favicon.ico并且想知道为什么它没有显示。
  • 屏幕截图显示您正在访问IP地址-server中的哪个nginx.conf块应该可以处理该地址?它们都有一个server_name(不包括IP),并且都没有被标记为default_server。我不确定在那里会发生什么。为避免疑问,您可能应该使用set up a default server,并且无论如何都要使用服务器名称来访问该站点。
  • 我确定它就在SO中(否则您将看到各种错误),但docker-compose的格式已全部损坏。如果您花一些时间并使用真实文件中使用的正确格式,这将使其他人更轻松地为您提供帮助-读取起来容易得多,我们甚至可以将其粘贴粘贴并亲自尝试。
  • 关于docker - Nginx https发布docker-compose,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59232246/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com