chore: Update docker-compose files and configurations

This commit is contained in:
Peifan Li
2025-12-26 13:55:38 -05:00
parent 5be5334df9
commit 33fa09045b
7 changed files with 243 additions and 104 deletions

View File

@@ -509,7 +509,7 @@ export async function scanCloudFiles(
// Clear cache for the new files // Clear cache for the new files
// Use relative paths (relative to upload root) for cache keys // Use relative paths (relative to upload root) for cache keys
clearSignedUrlCache(relativeVideoPath, "video"); clearSignedUrlCache(relativeVideoPath, "video");
// Only clear thumbnail cache if thumbnail was successfully generated // Only clear thumbnail cache if thumbnail was successfully generated
if (thumbnailGenerated && relativeThumbnailPath) { if (thumbnailGenerated && relativeThumbnailPath) {
// For thumbnail cache, use the directory path // For thumbnail cache, use the directory path

View File

@@ -0,0 +1,54 @@
version: '3.8'
# Example configuration for systems where bridge network cannot access internet
# (e.g., OpenWrt/iStoreOS on arm64)
#
# Usage: docker compose -f docker-compose.host-network.yml up -d
#
# This configuration uses host network mode for the backend to allow internet access,
# while keeping the frontend on bridge network with proper nginx configuration.
services:
backend:
image: franklioxygen/mytube:backend-latest
pull_policy: always
container_name: mytube-backend
network_mode: host
volumes:
- /share/CACHEDEV2_DATA/Medias/MyTube/uploads:/app/uploads
- /share/CACHEDEV2_DATA/Medias/MyTube/data:/app/data
environment:
- PORT=5551
restart: unless-stopped
# Note: In host mode, the container uses the host's network stack directly
# The backend will be accessible at localhost:5551 on the host
frontend:
image: franklioxygen/mytube:frontend-latest
pull_policy: always
container_name: mytube-frontend
ports:
- "5556:5556"
environment:
- VITE_API_URL=/api
- VITE_BACKEND_URL=
# Configure nginx to use localhost:5551 to reach backend in host mode
- NGINX_BACKEND_URL=http://localhost:5551
# Alternative: if backend is on a different host, use:
# - NGINX_BACKEND_URL=http://<host-ip>:5551
# - API_HOST=<host-ip>
# - API_PORT=5551
depends_on:
- backend
restart: unless-stopped
networks:
- mytube-network
volumes:
backend-data:
driver: local
networks:
mytube-network:
driver: bridge

View File

@@ -13,6 +13,10 @@ services:
restart: unless-stopped restart: unless-stopped
networks: networks:
- mytube-network - mytube-network
# For OpenWrt/iStoreOS systems where bridge network cannot access internet,
# uncomment the following lines to use host network mode:
# network_mode: host
# Then set NGINX_BACKEND_URL=http://localhost:5551 for frontend service
frontend: frontend:
image: franklioxygen/mytube:frontend-latest image: franklioxygen/mytube:frontend-latest
@@ -29,11 +33,16 @@ services:
# you can override these values using a .env file with: # you can override these values using a .env file with:
# - API_HOST=your-ip-or-hostname # - API_HOST=your-ip-or-hostname
# - API_PORT=5551 # - API_PORT=5551
# For host network mode (when backend uses network_mode: host), set:
# - NGINX_BACKEND_URL=http://localhost:5551
depends_on: depends_on:
- backend - backend
restart: unless-stopped restart: unless-stopped
networks: networks:
- mytube-network - mytube-network
# If backend uses host network mode, uncomment the following:
# network_mode: host
# And remove the ports mapping above
volumes: volumes:
backend-data: backend-data:
@@ -42,3 +51,10 @@ volumes:
networks: networks:
mytube-network: mytube-network:
driver: bridge driver: bridge
# DNS configuration to help with network connectivity issues on OpenWrt/iStoreOS
# If you still have issues accessing internet from containers, try:
# 1. Add your router's DNS servers: dns: [8.8.8.8, 8.8.4.4]
# 2. Or use host network mode for backend (see comments above)
driver_opts:
com.docker.network.bridge.enable_ip_masquerade: "true"
com.docker.network.bridge.enable_icc: "true"

View File

@@ -22,9 +22,9 @@ cd mytube-deploy
Create a file named `docker-compose.yml` inside your folder and paste the following content. Create a file named `docker-compose.yml` inside your folder and paste the following content.
**Note:** This version uses standard relative paths (`./data`, `./uploads`) instead of the QNAP-specific paths found in the original repository. **Note:** This version uses standard relative paths (`./data`, `./uploads`) instead of the QNAP-specific paths found in the original repository.
``` ```yaml
version: '3.8' version: '3.8'
services: services:
@@ -35,6 +35,8 @@ services:
restart: unless-stopped restart: unless-stopped
ports: ports:
- "5551:5551" - "5551:5551"
networks:
- mytube-network
environment: environment:
- PORT=5551 - PORT=5551
# Optional: Set a custom upload directory inside container if needed # Optional: Set a custom upload directory inside container if needed
@@ -42,8 +44,10 @@ services:
volumes: volumes:
- ./uploads:/app/uploads - ./uploads:/app/uploads
- ./data:/app/data - ./data:/app/data
networks: # For OpenWrt/iStoreOS systems where bridge network cannot access internet,
- mytube-network # uncomment the following lines to use host network mode:
# network_mode: host
# Then set NGINX_BACKEND_URL=http://localhost:5551 for frontend service
frontend: frontend:
image: franklioxygen/mytube:frontend-latest image: franklioxygen/mytube:frontend-latest
@@ -52,19 +56,31 @@ services:
restart: unless-stopped restart: unless-stopped
ports: ports:
- "5556:5556" - "5556:5556"
depends_on:
- backend
networks:
- mytube-network
environment: environment:
# Internal Docker networking URLs (Browser -> Frontend -> Backend) # Internal Docker networking URLs (Browser -> Frontend -> Backend)
# In most setups, these defaults work fine. # In most setups, these defaults work fine.
- VITE_API_URL=/api - VITE_API_URL=/api
- VITE_BACKEND_URL= - VITE_BACKEND_URL=
depends_on: # For host network mode (when backend uses network_mode: host), set:
- backend # - NGINX_BACKEND_URL=http://localhost:5551
networks: # If backend uses host network mode, uncomment the following:
- mytube-network # network_mode: host
# And remove the ports mapping above
networks: networks:
mytube-network: mytube-network:
driver: bridge driver: bridge
# DNS configuration to help with network connectivity issues on OpenWrt/iStoreOS
# If you still have issues accessing internet from containers, try:
# 1. Add your router's DNS servers: dns: [8.8.8.8, 8.8.4.4]
# 2. Or use host network mode for backend (see comments above)
driver_opts:
com.docker.network.bridge.enable_ip_masquerade: "true"
com.docker.network.bridge.enable_icc: "true"
``` ```
### 3. Start the Application ### 3. Start the Application
@@ -107,6 +123,7 @@ You can customize the deployment by adding a `.env` file or modifying the `en
|`VITE_API_URL`|Frontend|API endpoint path|`/api`| |`VITE_API_URL`|Frontend|API endpoint path|`/api`|
|`API_HOST`|Frontend|**Advanced:** Force a specific backend IP|_(Auto-detected)_| |`API_HOST`|Frontend|**Advanced:** Force a specific backend IP|_(Auto-detected)_|
|`API_PORT`|Frontend|**Advanced:** Force a specific backend Port|`5551`| |`API_PORT`|Frontend|**Advanced:** Force a specific backend Port|`5551`|
|`NGINX_BACKEND_URL`|Frontend|**Advanced:** Override Nginx backend upstream URL|`http://backend:5551`|
## 🛠️ Advanced Networking (Remote/NAS Deployment) ## 🛠️ Advanced Networking (Remote/NAS Deployment)
@@ -190,4 +207,14 @@ If you prefer to build the images yourself (e.g., to modify code), follow these
``` ```
docker rm -f mytube-backend mytube-frontend docker rm -f mytube-backend mytube-frontend
docker-compose up -d docker-compose up -d
``` ```
### 4. Connection Refused / No Internet (OpenWrt/iStoreOS)
- **Cause:** Docker bridge network compatibility issues on some router OS versions.
- **Fix:** We added `driver_opts` to the default network configuration to address this. If issues persist:
1. Edit `docker-compose.yml`.
2. Uncomment `network_mode: host` for both `backend` and `frontend`.
3. Remove (or comment out) the `ports` and `networks` sections for both services.
4. Set `NGINX_BACKEND_URL=http://localhost:5551` in the `frontend` environment variables.
5. Restart containers: `docker-compose up -d`

View File

@@ -1,9 +1,8 @@
# MyTube Docker 部署指南 # MyTube Docker 部署指南
本指南提供了使用 Docker 和 Docker Compose 部署 [MyTube](https://github.com/franklioxygen/MyTube "null") 的详细步骤。此设置适用于标准环境Linux, macOS, Windows并针对通用用途修改了原本专用于 QNAP 的配置。 本指南提供了使用 Docker 和 Docker Compose 部署  [MyTube](https://github.com/franklioxygen/MyTube "null")  的详细步骤。此设置适用于标准环境Linux, macOS, Windows并针对通用用途修改了原本专用于 QNAP 的配置。
> [!NOTE] > [!NOTE] > **多架构支持:** 官方镜像支持 **amd64** (x86_64) 和 **arm64** (Apple Silicon, Raspberry Pi 等) 架构。Docker 会自动为您的系统拉取正确的镜像。
> **多架构支持:** 官方镜像支持 **amd64** (x86_64) 和 **arm64** (Apple Silicon, Raspberry Pi 等) 架构。Docker 会自动为您的系统拉取极其正确的镜像。
## 🚀 快速开始 (使用预构建镜像) ## 🚀 快速开始 (使用预构建镜像)
@@ -18,14 +17,14 @@ mkdir mytube-deploy
cd mytube-deploy cd mytube-deploy
``` ```
### 2. 创建 `docker-compose.yml` 文件 ### 2. 创建  `docker-compose.yml`  文件
在文件夹中创建一个名为 `docker-compose.yml` 的文件,并粘贴以下内容。 在文件夹中创建一个名为  `docker-compose.yml`  的文件,并粘贴以下内容。
**注意:** 此版本使用标准的相对路径(`./data`, `./uploads`),而不是原始仓库中特定于 QNAP 的路径。 **注意:** 此版本使用标准的相对路径(`./data`, `./uploads`),而不是原始仓库中特定于 QNAP 的路径。
``` ```yaml
version: '3.8' version: "3.8"
services: services:
backend: backend:
@@ -35,6 +34,8 @@ services:
restart: unless-stopped restart: unless-stopped
ports: ports:
- "5551:5551" - "5551:5551"
networks:
- mytube-network
environment: environment:
- PORT=5551 - PORT=5551
# 可选:如果需要,在容器内设置自定义上传目录 # 可选:如果需要,在容器内设置自定义上传目录
@@ -42,8 +43,10 @@ services:
volumes: volumes:
- ./uploads:/app/uploads - ./uploads:/app/uploads
- ./data:/app/data - ./data:/app/data
networks: # 对于 bridge 网络无法访问互联网的 OpenWrt/iStoreOS 系统,
- mytube-network # 请取消注释以下行以使用主机网络模式:
# network_mode: host
# 然后为前端服务设置 NGINX_BACKEND_URL=http://localhost:5551
frontend: frontend:
image: franklioxygen/mytube:frontend-latest image: franklioxygen/mytube:frontend-latest
@@ -52,19 +55,31 @@ services:
restart: unless-stopped restart: unless-stopped
ports: ports:
- "5556:5556" - "5556:5556"
depends_on:
- backend
networks:
- mytube-network
environment: environment:
# 内部 Docker 网络 URL浏览器 -> 前端 -> 后端) # 内部 Docker 网络 URL浏览器 -> 前端 -> 后端)
# 在大多数设置中,这些默认值都可以正常工作。 # 在大多数设置中,这些默认值都可以正常工作。
- VITE_API_URL=/api - VITE_API_URL=/api
- VITE_BACKEND_URL= - VITE_BACKEND_URL=
depends_on: # 对于主机网络模式(当后端使用 network_mode: host 时),设置:
- backend # - NGINX_BACKEND_URL=http://localhost:5551
networks: # 如果后端使用主机网络模式,取消注释以下行:
- mytube-network # network_mode: host
# 并删除上面的 ports 映射
networks: networks:
mytube-network: mytube-network:
driver: bridge driver: bridge
# DNS 配置以帮助解决 OpenWrt/iStoreOS 上的网络连接问题
# 如果您仍然遇到容器无法访问互联网的问题,请尝试:
# 1. 添加路由器的 DNS 服务器dns: [8.8.8.8, 8.8.4.4]
# 2. 或者为后端使用主机网络模式(见上文注释)
driver_opts:
com.docker.network.bridge.enable_ip_masquerade: "true"
com.docker.network.bridge.enable_icc: "true"
``` ```
### 3. 启动应用 ### 3. 启动应用
@@ -80,33 +95,30 @@ docker-compose up -d
容器运行后,请在浏览器中访问应用程序: 容器运行后,请在浏览器中访问应用程序:
- **前端 UI:** `http://localhost:5556` - **前端 UI:** `http://localhost:5556`
- **后端 API:** `http://localhost:5551` - **后端 API:** `http://localhost:5551`
## ⚙️ 配置与数据持久化 ## ⚙️ 配置与数据持久化
### 卷 (数据存储) ### 卷 (数据存储)
上面的 `docker-compose.yml` 在当前目录中创建了两个文件夹来持久保存数据: 上面的  `docker-compose.yml`  在当前目录中创建了两个文件夹来持久保存数据:
- `./uploads`: 存储下载的视频和缩略图。 - `./uploads`: 存储下载的视频和缩略图。
- `./data`: 存储 SQLite 数据库和日志。 - `./data`: 存储 SQLite 数据库和日志。
**重要提示:** 如果您移动 `docker-compose.yml` 文件,必须同时移动这些文件夹以保留您的数据。 **重要提示:**  如果您移动  `docker-compose.yml`  文件,必须同时移动这些文件夹以保留您的数据。
### 环境变量 ### 环境变量
您可以通过添加 `.env` 文件或修改 `docker-compose.yml` 中的 `environment` 部分来自定义部署。 您可以通过添加  `.env`  文件或修改  `docker-compose.yml`  中的  `environment`  部分来自定义部署。
|变量|服务|描述|默认值| | 变量 | 服务 | 描述 | 默认值 |
|---|---|---|---| | ------------------- | -------- | ----------------------------------- | --------------------- |
|`PORT`|Backend|后端内部监听端口|`5551`| | `PORT` | Backend | 后端内部监听端口 | `5551` |
|`VITE_API_URL`|Frontend|API 端点路径|`/api`| | `VITE_API_URL` | Frontend | API 端点路径 | `/api` |
|`API_HOST`|Frontend|**高级:** 强制指定后端 IP|_(自动检测)_| | `API_HOST` | Frontend | **高级:**  强制指定后端 IP | _(自动检测)_ |
|`API_PORT`|Frontend|**高级:** 强制指定后端端口|`5551`| | `API_PORT` | Frontend | **高级:**  强制指定后端端口 | `5551` |
| `NGINX_BACKEND_URL` | Frontend | **高级:**  覆盖 Nginx 后端上游 URL | `http://backend:5551` |
## 🛠️ 高级网络 (远程/NAS 部署) ## 🛠️ 高级网络 (远程/NAS 部署)
@@ -114,80 +126,81 @@ docker-compose up -d
但是,如果您遇到连接问题(前端无法连接到后端),您可能需要明确告诉前端 API 的位置。 但是,如果您遇到连接问题(前端无法连接到后端),您可能需要明确告诉前端 API 的位置。
1. 在与 `docker-compose.yml` 相同的目录中创建一个 `.env` 文件: 1. 在与  `docker-compose.yml`  相同的目录中创建一个  `.env`  文件:
``` ```
API_HOST=192.168.1.100 # 替换为您的服务器局域网/公网 IP API_HOST=192.168.1.100 # 替换为您的服务器局域网/公网 IP
API_PORT=5551 API_PORT=5551
``` ```
2. 重启容器: 2. 重启容器:
``` ```
docker-compose down docker-compose down
docker-compose up -d docker-compose up -d
``` ```
## 🏗️ 从源码构建 (可选) ## 🏗️ 从源码构建 (可选)
如果您更喜欢自己构建镜像(例如,为了修改代码),请按照以下步骤操作: 如果您更喜欢自己构建镜像(例如,为了修改代码),请按照以下步骤操作:
1. **克隆仓库:** 1. **克隆仓库:**
``` ```
git clone https://github.com/franklioxygen/MyTube.git git clone https://github.com/franklioxygen/MyTube.git
cd MyTube cd MyTube
``` ```
2. **构建并运行:** 您可以使用相同的 `docker-compose.yml` 结构,但将 `image: ...` 替换为 `build: ...`。 2. **构建并运行:**  您可以使用相同的  `docker-compose.yml`  结构,但将  `image: ...`  替换为  `build: ...`。
修改 `docker-compose.yml` 修改  `docker-compose.yml`
```yaml ```yaml
services: services:
backend: backend:
build: ./backend build: ./backend
# ... 其他设置 # ... 其他设置
frontend: frontend:
build: ./frontend build: ./frontend
# ... 其他设置 # ... 其他设置
``` ```
3. **启动:** 3. **启动:**
``` ```
docker-compose up -d --build docker-compose up -d --build
``` ```
## ❓ 故障排除 (Troubleshooting) ## ❓ 故障排除 (Troubleshooting)
### 1. "Network Error" 或 API 连接失败 ### 1. "Network Error" 或 API 连接失败
- **原因:** 浏览器无法访问后端 API。 - **原因:**  浏览器无法访问后端 API。
- **解决方法:**  确保端口  `5551`  在您的防火墙上已打开。如果在远程服务器上运行,请尝试按照“高级网络”部分的说明在  `.env`  文件中设置  `API_HOST`。
- **解决方法:** 确保端口 `5551` 在您的防火墙上已打开。如果在远程服务器上运行,请尝试按照“高级网络”部分的说明在 `.env` 文件中设置 `API_HOST`。
### 2. `./uploads` 权限被拒绝 (Permission Denied) ### 2. `./uploads`  权限被拒绝 (Permission Denied)
- **原因:** Docker 容器用户没有主机目录的写入权限。 - **原因:** Docker 容器用户没有主机目录的写入权限。
- **解决方法:**  调整主机上的权限:
- **解决方法:** 调整主机上的权限: ```
chmod -R 777 ./uploads ./data
``` ```
chmod -R 777 ./uploads ./data
```
### 3. 容器名称冲突 (Container Name Conflicts) ### 3. 容器名称冲突 (Container Name Conflicts)
- **原因:** 您有另一个 MyTube 实例正在运行,或者旧容器未被删除。 - **原因:**  您有另一个 MyTube 实例正在运行,或者旧容器未被删除。
- **解决方法:**  在启动前删除旧容器:
- **解决方法:** 在启动前删除旧容器: ```
docker rm -f mytube-backend mytube-frontend
``` docker-compose up -d
docker rm -f mytube-backend mytube-frontend ```
docker-compose up -d
``` ### 4. 连接被拒绝 / 无法连接互联网 (OpenWrt/iStoreOS)
- **原因:** 某些路由器系统上的 Docker bridge 网络兼容性问题。
- **解决方法:** 我们已在默认网络配置中添加了 `driver_opts` 以解决此问题。如果问题仍然存在:
1. 编辑 `docker-compose.yml`。
2. 为 `backend` 和 `frontend` 取消注释 `network_mode: host`。
3. 删除(或注释掉)两个服务的 `ports` 和 `networks` 部分。
4. 在 `frontend` 环境变量中设置 `NGINX_BACKEND_URL=http://localhost:5551`。
5. 重启容器:`docker-compose up -d`

View File

@@ -5,21 +5,47 @@ set -e
DEFAULT_API_URL="http://localhost:5551/api" DEFAULT_API_URL="http://localhost:5551/api"
DEFAULT_BACKEND_URL="http://localhost:5551" DEFAULT_BACKEND_URL="http://localhost:5551"
# Runtime values from docker-compose environment variables # Determine backend URL for nginx configuration
# Priority: NGINX_BACKEND_URL > API_HOST > VITE_BACKEND_URL > default (backend:5551)
if [ ! -z "$NGINX_BACKEND_URL" ]; then
# Direct override for nginx backend URL (useful for host network mode)
NGINX_BACKEND="${NGINX_BACKEND_URL}"
echo "Using NGINX_BACKEND_URL: $NGINX_BACKEND"
elif [ ! -z "$API_HOST" ]; then
# Custom host configuration
API_PORT="${API_PORT:-5551}"
NGINX_BACKEND="http://${API_HOST}:${API_PORT}"
echo "Using custom host configuration: $API_HOST:$API_PORT"
elif [ ! -z "$VITE_BACKEND_URL" ]; then
# Use VITE_BACKEND_URL if provided
NGINX_BACKEND="${VITE_BACKEND_URL}"
echo "Using VITE_BACKEND_URL: $NGINX_BACKEND"
else
# Default: use service name for bridge network
NGINX_BACKEND="http://backend:5551"
echo "Using default backend service name: backend:5551"
fi
# Runtime values from docker-compose environment variables for JavaScript
DOCKER_API_URL="${VITE_API_URL-http://backend:5551/api}" DOCKER_API_URL="${VITE_API_URL-http://backend:5551/api}"
DOCKER_BACKEND_URL="${VITE_BACKEND_URL-http://backend:5551}" DOCKER_BACKEND_URL="${VITE_BACKEND_URL-http://backend:5551}"
# If API_HOST is provided, override with custom host configuration # If API_HOST is provided, override JavaScript URLs
if [ ! -z "$API_HOST" ]; then if [ ! -z "$API_HOST" ]; then
API_PORT="${API_PORT:-5551}" API_PORT="${API_PORT:-5551}"
DOCKER_API_URL="http://${API_HOST}:${API_PORT}/api" DOCKER_API_URL="http://${API_HOST}:${API_PORT}/api"
DOCKER_BACKEND_URL="http://${API_HOST}:${API_PORT}" DOCKER_BACKEND_URL="http://${API_HOST}:${API_PORT}"
echo "Using custom host configuration: $API_HOST:$API_PORT"
fi fi
echo "Configuring frontend with the following settings:" echo "Configuring frontend with the following settings:"
echo "API URL: $DOCKER_API_URL" echo "API URL (JS): $DOCKER_API_URL"
echo "Backend URL: $DOCKER_BACKEND_URL" echo "Backend URL (JS): $DOCKER_BACKEND_URL"
echo "Backend URL (Nginx): $NGINX_BACKEND"
# Replace backend URL placeholder in nginx.conf
ESCAPED_NGINX_BACKEND=$(echo $NGINX_BACKEND | sed 's/\//\\\//g')
sed -i "s/__BACKEND_URL__/$ESCAPED_NGINX_BACKEND/g" /etc/nginx/conf.d/default.conf
echo "Updated nginx.conf with backend URL: $NGINX_BACKEND"
# Replace environment variables in the JavaScript files # Replace environment variables in the JavaScript files
# We need to escape special characters for sed # We need to escape special characters for sed

View File

@@ -10,8 +10,11 @@ server {
try_files $uri $uri/ /index.html; try_files $uri $uri/ /index.html;
} }
# Backend URL placeholder - will be replaced by entrypoint.sh at runtime
# Default: http://backend:5551 (for bridge network)
# Can be overridden via NGINX_BACKEND_URL environment variable
location /api { location /api {
proxy_pass http://backend:5551/api; proxy_pass __BACKEND_URL__/api;
proxy_set_header Host $host; proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
@@ -23,7 +26,7 @@ server {
} }
location ^~ /videos { location ^~ /videos {
proxy_pass http://backend:5551/videos; proxy_pass __BACKEND_URL__/videos;
proxy_set_header Host $host; proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
@@ -31,7 +34,7 @@ server {
} }
location ^~ /images { location ^~ /images {
proxy_pass http://backend:5551/images; proxy_pass __BACKEND_URL__/images;
proxy_set_header Host $host; proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
@@ -39,7 +42,7 @@ server {
} }
location ^~ /subtitles { location ^~ /subtitles {
proxy_pass http://backend:5551/subtitles; proxy_pass __BACKEND_URL__/subtitles;
proxy_set_header Host $host; proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;