mirror of
https://gitcode.com/ageerle/ruoyi-ai.git
synced 2026-04-15 04:43:40 +00:00
Merge pull request #90 from alanpeng/main
Add one-step auto-deployment script
This commit is contained in:
42
README.md
42
README.md
@@ -36,18 +36,48 @@
|
|||||||
|
|
||||||
## 快速启动
|
## 快速启动
|
||||||
|
|
||||||
1. **克隆项目**
|
1. 确认系统内已经安装好以下软件
|
||||||
|
docker
|
||||||
|
docker-compose
|
||||||
|
git
|
||||||
|
unzip
|
||||||
|
|
||||||
|
2. **克隆项目**
|
||||||
```bash
|
```bash
|
||||||
git clone https://github.com/alanpeng/ruoyi-ai-docker-deploy
|
git clone https://github.com/ageerle/ruoyi-ai
|
||||||
cd ruoyi-ai-docker-deploy
|
cd ruoyi-ai/docker-deploy/one-step-script/
|
||||||
```
|
```
|
||||||
|
|
||||||
2. **启动全套应用**
|
3. **启动部署脚本**
|
||||||
|
|
||||||
|
中文界面部署脚本:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker-compose up -d
|
./deploy-cn.sh
|
||||||
|
```
|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
|
英文界面部署脚本:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./deploy-en.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
3. **访问应用界面**
|
4. 如果在执行部署脚本过程中不需要在本地重新构建编译服务软件包以及重新封装容器镜像,则需要在脚本交互提出以下问题时选择D按键进行直接部署,否则就会执行全新的编译构建及容器封装之后再执行部署:
|
||||||
|
```
|
||||||
|
已将模板文件复制到部署目录。
|
||||||
|
正在使用您的配置更新 .env 文件...
|
||||||
|
已使用您的配置更新 .env 文件。
|
||||||
|
正在使用您的配置更新 docker-compose.yaml 文件...
|
||||||
|
已使用您的配置更新 docker-compose.yaml 文件。
|
||||||
|
|
||||||
|
=== 构建或部署选项 ===
|
||||||
|
您想构建新镜像 (B) 还是直接使用现有镜像部署 (D)?[B/d]:
|
||||||
|
```
|
||||||
|
|
||||||
|
5. **访问应用界面**
|
||||||
- 用户界面:`http://your-server-ip:8081`
|
- 用户界面:`http://your-server-ip:8081`
|
||||||
- 管理员界面:`http://your-server-ip:8082`
|
- 管理员界面:`http://your-server-ip:8082`
|
||||||
|
|
||||||
|
|||||||
519
docker-deploy/one-step-script/deploy-cn.sh
Executable file
519
docker-deploy/one-step-script/deploy-cn.sh
Executable file
File diff suppressed because it is too large
Load Diff
519
docker-deploy/one-step-script/deploy-en.sh
Executable file
519
docker-deploy/one-step-script/deploy-en.sh
Executable file
File diff suppressed because it is too large
Load Diff
2687
docker-deploy/one-step-script/mysql-init/01_ruoyi-ai.sql
Normal file
2687
docker-deploy/one-step-script/mysql-init/01_ruoyi-ai.sql
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,4 @@
|
|||||||
|
INSERT INTO `chat_model` (`id`, `tenant_id`, `category`, `model_name`, `model_describe`, `model_price`, `model_type`, `model_show`, `system_prompt`, `api_host`, `api_key`, `create_dept`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1907575746601119746, '000000', 'vector', 'text-embedding-3-small', 'text-embedding-3-small', 0, '2', '0', NULL, 'https://api.pandarobot.chat/', 'sk-cdBlIaZcufccm2RaDe547cBd054d49C7B0782eCa72A0052b', 103, 1, '2025-04-03 07:27:54', 1, '2025-04-03 07:27:54', 'text-embedding-3-small');
|
||||||
|
INSERT INTO `chat_model` (`id`, `tenant_id`, `category`, `model_name`, `model_describe`, `model_price`, `model_type`, `model_show`, `system_prompt`, `api_host`, `api_key`, `create_dept`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1907576007017066497, '000000', 'vector', 'quentinz/bge-large-zh-v1.5', 'bge-large-zh-v1.5', 0, '2', '0', NULL, 'http://127.0.0.1:11434/', 'cdBlIaZcufccm2RaDe547cBd054d49C7B0782eCa72A0052b', 103, 1, '2025-04-03 07:28:56', 1, '2025-04-03 07:28:56', 'bge-large-zh-v1.5');
|
||||||
|
INSERT INTO `chat_model` (`id`, `tenant_id`, `category`, `model_name`, `model_describe`, `model_price`, `model_type`, `model_show`, `system_prompt`, `api_host`, `api_key`, `create_dept`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1907576806191362049, '000000', 'vector', 'nomic-embed-text', 'nomic-embed-text', 0, '2', '0', NULL, 'http://127.0.0.1:11434/', 'nomic-embed-text', 103, 1, '2025-04-03 07:32:06', 1, '2025-04-03 07:32:06', 'nomic-embed-text');
|
||||||
|
INSERT INTO `chat_model` (`id`, `tenant_id`, `category`, `model_name`, `model_describe`, `model_price`, `model_type`, `model_show`, `system_prompt`, `api_host`, `api_key`, `create_dept`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1907577073490161665, '000000', 'vector', 'snowflake-arctic-embed', 'snowflake-arctic-embed', 0, '2', '0', NULL, 'http://127.0.0.1:11434/', 'snowflake-arctic-embed', 103, 1, '2025-04-03 07:33:10', 1, '2025-04-03 07:33:10', 'snowflake-arctic-embed');
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
/*
|
||||||
|
Navicat MySQL Data Transfer
|
||||||
|
|
||||||
|
Source Server : 129.211.24.7
|
||||||
|
Source Server Type : MySQL
|
||||||
|
Source Server Version : 50744
|
||||||
|
Source Host : 129.211.24.7:3306
|
||||||
|
Source Schema : ry-vue
|
||||||
|
|
||||||
|
Target Server Type : MySQL
|
||||||
|
Target Server Version : 50744
|
||||||
|
File Encoding : 65001
|
||||||
|
|
||||||
|
Date: 05/05/2025 15:01:08
|
||||||
|
*/
|
||||||
|
|
||||||
|
SET NAMES utf8mb4;
|
||||||
|
SET FOREIGN_KEY_CHECKS = 0;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for chat_session
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `chat_session`;
|
||||||
|
CREATE TABLE `chat_session` (
|
||||||
|
`id` bigint(20) NOT NULL COMMENT '主键',
|
||||||
|
`user_id` bigint(20) NULL DEFAULT NULL COMMENT '用户id',
|
||||||
|
`session_title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '会话标题',
|
||||||
|
`session_content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '会话内容',
|
||||||
|
`create_dept` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '部门',
|
||||||
|
`create_by` bigint(20) NULL DEFAULT NULL COMMENT '创建者',
|
||||||
|
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
|
||||||
|
`update_by` bigint(20) NULL DEFAULT NULL COMMENT '更新者',
|
||||||
|
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
|
||||||
|
`remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
|
||||||
|
PRIMARY KEY (`id`) USING BTREE
|
||||||
|
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '会话管理' ROW_FORMAT = Dynamic;
|
||||||
|
|
||||||
|
SET FOREIGN_KEY_CHECKS = 1;
|
||||||
|
|
||||||
|
ALTER TABLE `chat_message`
|
||||||
|
ADD COLUMN `session_id` bigint(20) NULL COMMENT '会话id' AFTER `id`;
|
||||||
|
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
ALTER TABLE `chat_model`
|
||||||
|
ADD COLUMN `api_url` varchar(50) NULL COMMENT '请求后缀' AFTER `api_key`;
|
||||||
|
|
||||||
|
INSERT INTO `chat_config` (`id`, `category`, `config_name`, `config_value`, `config_dict`, `create_dept`, `create_time`, `create_by`, `update_by`, `update_time`, `remark`, `version`, `del_flag`, `update_ip`, `tenant_id`) VALUES (1779450794872414211, 'chat', 'apiUrl', 'v1/chat/completions', 'API 请求后缀', 103, '2024-04-14 18:05:05', '1', '1', '2025-04-23 22:29:04', NULL, NULL, '0', NULL, 0);
|
||||||
50
docker-deploy/one-step-script/template/.env.template
Normal file
50
docker-deploy/one-step-script/template/.env.template
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
# Timezone
|
||||||
|
TZ={{TZ}}
|
||||||
|
|
||||||
|
# MySQL Configuration
|
||||||
|
MYSQL_ROOT_PASSWORD={{MYSQL_ROOT_PASSWORD}}
|
||||||
|
MYSQL_DATABASE={{MYSQL_DATABASE}}
|
||||||
|
MYSQL_PORT={{MYSQL_PORT}}
|
||||||
|
|
||||||
|
# Redis Configuration
|
||||||
|
REDIS_PORT={{REDIS_PORT}}
|
||||||
|
REDIS_PASSWORD={{REDIS_PASSWORD}}
|
||||||
|
REDIS_DATABASE={{REDIS_DATABASE}}
|
||||||
|
REDIS_TIMEOUT={{REDIS_TIMEOUT}}
|
||||||
|
|
||||||
|
# Backend Configuration
|
||||||
|
SERVER_PORT={{SERVER_PORT}}
|
||||||
|
DB_URL=jdbc:mysql://mysql:3306/{{MYSQL_DATABASE}}?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true
|
||||||
|
DB_USERNAME={{DB_USERNAME}}
|
||||||
|
DB_PASSWORD={{DB_PASSWORD}}
|
||||||
|
REDIS_HOST=redis
|
||||||
|
BACKEND_HOST={{BACKEND_HOST}}
|
||||||
|
|
||||||
|
# Frontend Configuration
|
||||||
|
ADMIN_PORT={{ADMIN_PORT}}
|
||||||
|
WEB_PORT={{WEB_PORT}}
|
||||||
|
FRONTEND_API_BASE_URL={{FRONTEND_API_BASE_URL}}
|
||||||
|
FRONTEND_DEV_PORT={{FRONTEND_DEV_PORT}}
|
||||||
|
|
||||||
|
# Weaviate Configuration
|
||||||
|
WEAVIATE_HTTP_PORT={{WEAVIATE_HTTP_PORT}}
|
||||||
|
WEAVIATE_GRPC_PORT={{WEAVIATE_GRPC_PORT}}
|
||||||
|
WEAVIATE_QUERY_LIMIT={{WEAVIATE_QUERY_LIMIT}}
|
||||||
|
WEAVIATE_ANONYMOUS_ACCESS={{WEAVIATE_ANONYMOUS_ACCESS}}
|
||||||
|
WEAVIATE_DATA_PATH={{WEAVIATE_DATA_PATH}}
|
||||||
|
WEAVIATE_VECTORIZER_MODULE={{WEAVIATE_VECTORIZER_MODULE}}
|
||||||
|
WEAVIATE_MODULES={{WEAVIATE_MODULES}}
|
||||||
|
WEAVIATE_CLUSTER_HOSTNAME={{WEAVIATE_CLUSTER_HOSTNAME}}
|
||||||
|
WEAVIATE_PROTOCOL={{WEAVIATE_PROTOCOL}}
|
||||||
|
WEAVIATE_HOST=weaviate:8080
|
||||||
|
WEAVIATE_CLASSNAME={{WEAVIATE_CLASSNAME}}
|
||||||
|
|
||||||
|
# Production Configuration
|
||||||
|
PROD_DB_URL={{PROD_DB_URL}}
|
||||||
|
PROD_DB_USERNAME={{PROD_DB_USERNAME}}
|
||||||
|
PROD_DB_PASSWORD={{PROD_DB_PASSWORD}}
|
||||||
|
PROD_REDIS_HOST={{PROD_REDIS_HOST}}
|
||||||
|
PROD_REDIS_PORT={{PROD_REDIS_PORT}}
|
||||||
|
PROD_REDIS_DATABASE={{PROD_REDIS_DATABASE}}
|
||||||
|
PROD_REDIS_PASSWORD={{PROD_REDIS_PASSWORD}}
|
||||||
|
PROD_REDIS_TIMEOUT={{PROD_REDIS_TIMEOUT}}
|
||||||
@@ -0,0 +1,89 @@
|
|||||||
|
---
|
||||||
|
# 数据源配置
|
||||||
|
spring:
|
||||||
|
datasource:
|
||||||
|
type: com.zaxxer.hikari.HikariDataSource
|
||||||
|
dynamic:
|
||||||
|
# 性能分析插件(有性能损耗 不建议生产环境使用)
|
||||||
|
p6spy: false
|
||||||
|
# 设置默认的数据源或者数据源组,默认值即为 master
|
||||||
|
primary: master
|
||||||
|
# 严格模式 匹配不到数据源则报错
|
||||||
|
strict: true
|
||||||
|
datasource:
|
||||||
|
# 主库数据源
|
||||||
|
master:
|
||||||
|
type: ${spring.datasource.type}
|
||||||
|
driverClassName: com.mysql.cj.jdbc.Driver
|
||||||
|
url: {{PROD_DB_URL}}
|
||||||
|
username: {{PROD_DB_USERNAME}}
|
||||||
|
password: {{PROD_DB_PASSWORD}}
|
||||||
|
hikari:
|
||||||
|
# 最大连接池数量
|
||||||
|
maxPoolSize: 20
|
||||||
|
# 最小空闲线程数量
|
||||||
|
minIdle: 10
|
||||||
|
# 配置获取连接等待超时的时间
|
||||||
|
connectionTimeout: 30000
|
||||||
|
# 校验超时时间
|
||||||
|
validationTimeout: 5000
|
||||||
|
# 空闲连接存活最大时间,默认10分钟
|
||||||
|
idleTimeout: 600000
|
||||||
|
# 此属性控制池中连接的最长生命周期,值0表示无限生命周期,默认30分钟
|
||||||
|
maxLifetime: 1800000
|
||||||
|
# 连接测试query(配置检测连接是否有效)
|
||||||
|
connectionTestQuery: SELECT 1
|
||||||
|
# 多久检查一次连接的活性
|
||||||
|
keepaliveTime: 30000
|
||||||
|
|
||||||
|
--- # redis 单机配置
|
||||||
|
spring.data:
|
||||||
|
redis:
|
||||||
|
# 地址
|
||||||
|
host: {{PROD_REDIS_HOST}}
|
||||||
|
# 端口,默认为6379
|
||||||
|
port: {{PROD_REDIS_PORT}}
|
||||||
|
# 数据库索引
|
||||||
|
database: {{PROD_REDIS_DATABASE}}
|
||||||
|
# 密码
|
||||||
|
password: {{PROD_REDIS_PASSWORD}}
|
||||||
|
# 连接超时时间
|
||||||
|
timeout: {{PROD_REDIS_TIMEOUT}}
|
||||||
|
# 是否开启ssl
|
||||||
|
ssl: false
|
||||||
|
|
||||||
|
# 日志配置
|
||||||
|
logging:
|
||||||
|
level:
|
||||||
|
org.ruoyi: info
|
||||||
|
org.springframework: warn
|
||||||
|
config: classpath:logback-plus.xml
|
||||||
|
|
||||||
|
# Sa-Token配置
|
||||||
|
sa-token:
|
||||||
|
# token名称 (同时也是cookie名称)
|
||||||
|
token-name: Authorization
|
||||||
|
# token有效期 设为7天 (必定过期) 单位: 秒
|
||||||
|
timeout: 604800
|
||||||
|
# token临时有效期 (指定时间无操作就过期) 单位: 秒
|
||||||
|
activity-timeout: 604800
|
||||||
|
# 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录)
|
||||||
|
is-concurrent: true
|
||||||
|
# 在多人登录同一账号时,是否共用一个token (为true时所有登录共用一个token, 为false时每次登录新建一个token)
|
||||||
|
is-share: false
|
||||||
|
# 是否尝试从header里读取token
|
||||||
|
is-read-header: true
|
||||||
|
# 是否尝试从cookie里读取token
|
||||||
|
is-read-cookie: false
|
||||||
|
# token前缀
|
||||||
|
token-prefix: "Bearer"
|
||||||
|
# jwt秘钥
|
||||||
|
jwt-secret-key: abcdefghijklmnopqrstuvwxyz
|
||||||
|
|
||||||
|
# websocket
|
||||||
|
websocket:
|
||||||
|
enabled: true
|
||||||
|
# 路径
|
||||||
|
path: '/resource/websocket'
|
||||||
|
# 设置访问源地址
|
||||||
|
allowedOrigins: '*'
|
||||||
@@ -0,0 +1,115 @@
|
|||||||
|
version: '3'
|
||||||
|
|
||||||
|
services:
|
||||||
|
mysql:
|
||||||
|
image: registry.cn-shenzhen.aliyuncs.com/breeze-project/mysql:8.0.33
|
||||||
|
container_name: ruoyi-ai-mysql
|
||||||
|
env_file:
|
||||||
|
- ./.env
|
||||||
|
environment:
|
||||||
|
- MYSQL_ROOT_PASSWORD={{MYSQL_ROOT_PASSWORD}}
|
||||||
|
- MYSQL_DATABASE={{MYSQL_DATABASE}}
|
||||||
|
ports:
|
||||||
|
- "{{MYSQL_PORT}}:3306"
|
||||||
|
volumes:
|
||||||
|
- ./mysql-init:/docker-entrypoint-initdb.d
|
||||||
|
- ./data/mysql:/var/lib/mysql
|
||||||
|
command:
|
||||||
|
--default-authentication-plugin=mysql_native_password
|
||||||
|
--character-set-server=utf8mb4
|
||||||
|
--collation-server=utf8mb4_general_ci
|
||||||
|
--explicit_defaults_for_timestamp=true
|
||||||
|
--lower_case_table_names=1
|
||||||
|
restart: always
|
||||||
|
networks:
|
||||||
|
- ruoyi-net
|
||||||
|
|
||||||
|
redis:
|
||||||
|
image: registry.cn-shenzhen.aliyuncs.com/breeze-project/redis:6.2
|
||||||
|
container_name: ruoyi-ai-redis
|
||||||
|
env_file:
|
||||||
|
- ./.env
|
||||||
|
ports:
|
||||||
|
- "{{REDIS_PORT}}:6379"
|
||||||
|
volumes:
|
||||||
|
- ./data/redis:/data
|
||||||
|
command: redis-server --appendonly yes ${REDIS_PASSWORD:+--requirepass ${REDIS_PASSWORD}}
|
||||||
|
restart: always
|
||||||
|
networks:
|
||||||
|
- ruoyi-net
|
||||||
|
|
||||||
|
weaviate:
|
||||||
|
image: registry.cn-shenzhen.aliyuncs.com/breeze-project/weaviate:1.30.0
|
||||||
|
container_name: ruoyi-ai-weaviate
|
||||||
|
ports:
|
||||||
|
- "{{WEAVIATE_HTTP_PORT}}:8080"
|
||||||
|
- "{{WEAVIATE_GRPC_PORT}}:50051"
|
||||||
|
volumes:
|
||||||
|
- ./data/weaviate:/var/lib/weaviate
|
||||||
|
env_file:
|
||||||
|
- ./.env
|
||||||
|
environment:
|
||||||
|
- QUERY_DEFAULTS_LIMIT={{WEAVIATE_QUERY_LIMIT}}
|
||||||
|
- AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED={{WEAVIATE_ANONYMOUS_ACCESS}}
|
||||||
|
- PERSISTENCE_DATA_PATH={{WEAVIATE_DATA_PATH}}
|
||||||
|
- DEFAULT_VECTORIZER_MODULE={{WEAVIATE_VECTORIZER_MODULE}}
|
||||||
|
- ENABLE_MODULES={{WEAVIATE_MODULES}}
|
||||||
|
- CLUSTER_HOSTNAME={{WEAVIATE_CLUSTER_HOSTNAME}}
|
||||||
|
command: --host 0.0.0.0 --port 8080 --scheme http
|
||||||
|
restart: always
|
||||||
|
networks:
|
||||||
|
- ruoyi-net
|
||||||
|
|
||||||
|
ruoyi-backend:
|
||||||
|
image: ruoyi-ai-backend:latest
|
||||||
|
container_name: ruoyi-ai-backend
|
||||||
|
env_file:
|
||||||
|
- ./.env
|
||||||
|
ports:
|
||||||
|
- "{{SERVER_PORT}}:{{SERVER_PORT}}"
|
||||||
|
environment:
|
||||||
|
- SERVER_PORT={{SERVER_PORT}}
|
||||||
|
- DB_URL={{DB_URL}}
|
||||||
|
- DB_USERNAME={{DB_USERNAME}}
|
||||||
|
- DB_PASSWORD={{DB_PASSWORD}}
|
||||||
|
- REDIS_HOST={{REDIS_HOST}}
|
||||||
|
- REDIS_PORT={{REDIS_PORT}}
|
||||||
|
- REDIS_DATABASE={{REDIS_DATABASE}}
|
||||||
|
- REDIS_PASSWORD={{REDIS_PASSWORD}}
|
||||||
|
- REDIS_TIMEOUT={{REDIS_TIMEOUT}}
|
||||||
|
- TZ={{TZ}}
|
||||||
|
volumes:
|
||||||
|
- ./data/logs:/ruoyi/server/logs
|
||||||
|
restart: always
|
||||||
|
depends_on:
|
||||||
|
- mysql
|
||||||
|
- redis
|
||||||
|
- weaviate
|
||||||
|
networks:
|
||||||
|
- ruoyi-net
|
||||||
|
|
||||||
|
ruoyi-admin:
|
||||||
|
image: ruoyi-ai-admin:latest
|
||||||
|
container_name: ruoyi-ai-admin
|
||||||
|
ports:
|
||||||
|
- "{{ADMIN_PORT}}:80"
|
||||||
|
restart: always
|
||||||
|
depends_on:
|
||||||
|
- ruoyi-backend
|
||||||
|
networks:
|
||||||
|
- ruoyi-net
|
||||||
|
|
||||||
|
ruoyi-web:
|
||||||
|
image: ruoyi-ai-web:latest
|
||||||
|
container_name: ruoyi-ai-web
|
||||||
|
ports:
|
||||||
|
- "{{WEB_PORT}}:80"
|
||||||
|
restart: always
|
||||||
|
depends_on:
|
||||||
|
- ruoyi-backend
|
||||||
|
networks:
|
||||||
|
- ruoyi-net
|
||||||
|
|
||||||
|
networks:
|
||||||
|
ruoyi-net:
|
||||||
|
driver: bridge
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
server_name localhost;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
root /usr/share/nginx/html;
|
||||||
|
index index.html index.htm;
|
||||||
|
try_files $uri $uri/ /index.html;
|
||||||
|
}
|
||||||
|
|
||||||
|
location /prod-api/ {
|
||||||
|
proxy_pass http://{{BACKEND_HOST}}:{{SERVER_PORT}}/;
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
}
|
||||||
|
|
||||||
|
error_page 500 502 503 504 /50x.html;
|
||||||
|
location = /50x.html {
|
||||||
|
root /usr/share/nginx/html;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
server_name localhost;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
root /usr/share/nginx/html;
|
||||||
|
index index.html index.htm;
|
||||||
|
try_files $uri $uri/ /index.html;
|
||||||
|
}
|
||||||
|
|
||||||
|
location /api/ {
|
||||||
|
proxy_pass http://{{BACKEND_HOST}}:{{SERVER_PORT}}/;
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
}
|
||||||
|
|
||||||
|
error_page 500 502 503 504 /50x.html;
|
||||||
|
location = /50x.html {
|
||||||
|
root /usr/share/nginx/html;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user