feat: init

This commit is contained in:
liuyx 2024-02-04 20:39:43 +08:00
commit e6ee02e2f3
8 changed files with 173 additions and 0 deletions

5
.env Executable file
View File

@ -0,0 +1,5 @@
COMPOSE_PROJECT_NAME=gateway
TZ=Asia/Shanghai
TERM=xterm-256color
DIR=.

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
/ngx/etc/.*
/ngx/log

26
docker-compose.yaml Executable file
View File

@ -0,0 +1,26 @@
version: '3'
networks:
local:
name: local
external: true
services:
ngx:
container_name: ngx
image: nginx:latest
restart: always
ports:
- 80:80
- 443:443
networks:
- local
volumes:
- ${DIR}/ngx/etc/nginx.conf:/etc/nginx/nginx.conf
- ${DIR}/ngx/etc/conf.d:/etc/nginx/conf.d # 外层有公共参数定义
- ${DIR}/ngx/log:/var/log/nginx
- /etc/localtime:/etc/localtime:ro
environment:
TZ:
TERM:

1
ngx/etc/conf.d/includ.conf Executable file
View File

@ -0,0 +1 @@
include ./conf.d/*/*.conf;

38
ngx/etc/conf.d/model/site.cnf Executable file
View File

@ -0,0 +1,38 @@
upstream {stream_name} {
server localhost:{port} weight=1;
}
# ===================配置===================
# 带加密的 web
server {
listen 80;
listen 443 ssl http2;
charset utf-8;
server_name {server_name};
# 日志
access_log ./conf.d/{name}/access.log;
error_log ./conf.d/{name}/error.log;
#
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_redirect off;
proxy_pass http://{stream_name};
}
location = /favicon.ico {
log_not_found off;
access_log off;
root conf/path/to/site;
}
# 自动重定向 80 到 443 开启 SSL
# if ( $scheme = http ){
# return 301 https://$server_name$request_uri;
# }
}

19
ngx/etc/conf.d/model/web.cnf Executable file
View File

@ -0,0 +1,19 @@
server {
listen 80;
listen 443 ssl http2;
# 自动重定向 80 到 443 开启 SSL
# if ( $scheme = http ){
# return 301 https://$server_name$request_uri;
# }
access_log ./conf.d/{server}/access.log;
error_log ./conf.d/{server}/error.log;
charset utf-8;
server_name {server_name};
# web 根目录
root /path/to/web;
}

47
ngx/etc/nginx.conf Executable file
View File

@ -0,0 +1,47 @@
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
########## 以下为自定义配置 ##########
#自定义变量 $connection_upgrade
map $http_upgrade $connection_upgrade {
default keep-alive; # 默认为 keep-alive 一般 http 请求
'websocket' upgrade; # 如果为 websocket upgrade 升级
}
#gzip on;
# 关闭 ip 地址访问
server {
listen 80 default_server;
# listen 443 ssl http2;
server_name _;
return 403;
}
include /etc/nginx/conf.d/*.conf;
}

35
readme.md Normal file
View File

@ -0,0 +1,35 @@
# 使用 docker Gateway
## docker 网络配置
> 一个 docker 网段的创建关联一组 veth 配置,多个需要互相访问的服务尽量在同一网段下使用 docker network 通信,可以解决大多数由网络造成的访问问题。
1. 创建本地网段
```shell
docker network create --ipv6 --subnet=2001:db8:abcd::/64 --gateway=2001:db8:abcd::1 --attachable local
```
2. 容器加入本地网段
```yaml
# docker-compose.yaml
networks:
local:
name: local
external: true
services:
ngx:
container_name: ngx
image: nginx:latest
restart: always
ports:
- 80:80
- 443:443
networks:
- local
# cmd
docker run --networks=local nginx:latest
```