Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,6 @@ __pycache__
*.key
*.pem

tags
venv

4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,10 @@ PURCHASES_COUNT = 1000 # amount of created purchases. With chance 50% create p
### You need to set environment variables into .env file like this

```
DB_SUPERUSER=admin
DB_SUPERPSWD=admin
DB_NAME=study-project

STORE_DB_NAME=store-db
STORE_DB_PSWD=store-pswd
STORE_DB_USER=store-user
Expand Down
2 changes: 1 addition & 1 deletion bank-service/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ ENV PATH="/opt/venv/bin:$PATH"

COPY requirements.txt .

RUN CFLAGS="-I/usr/local/opt/openssl/include" LDFLAGS="-L/usr/local/opt/openssl/lib" UWSGI_PROFILE_OVERRIDE=ssl=true pip3 install --no-cache-dir -r requirements.txt
RUN pip3 install --no-cache-dir -r requirements.txt

WORKDIR /bank
COPY . /bank
Expand Down
25 changes: 9 additions & 16 deletions bank-service/uwsgi.ini
Original file line number Diff line number Diff line change
@@ -1,22 +1,15 @@
[uwsgi]
wsgi-file = wsgi.py
callable = app

wsgi-file=wsgi.py

virtualenv=/opt/venv

vacuum=true

buffer-size=65535

env=HTTPS=on
callable=app

master=true
https=0.0.0.0:5001,/bank/bank.crt,/bank/bank.key
master = true
processes = 4
threads = 2
enable-threads = true

module=store
mountpoint=/store
http = 0.0.0.0:5000

# logto = /var/log/%n.log
vacuum = true
buffer-size = 32768

module = bank
2 changes: 1 addition & 1 deletion docker-compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ services:

reverse-proxy:
image: nginx:1.25-alpine
container_name: gamehub-pr
container_name: gamehub-rp
ports:
- "80:80"
- "443:443"
Expand Down
106 changes: 47 additions & 59 deletions nginx/conf.d/app.conf
Original file line number Diff line number Diff line change
@@ -1,69 +1,57 @@
upstream store_service_upstream {
server store-service:5000;
server store-service:5000;
}

upstream bank_service_upstream {
server bank-service:5001;
upstream bank_service_upstream {
server bank-service:5001;
}

server {
listen 80;
listen [::]:80;
server_name gamehub.local www.gamehub.local;
return 301 https://$host$request_uri;
listen 80;
listen [::]:80;
server_name gamehub.local www.gamehub.local;
return 301 https://$host$request_uri;
}

server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name gamehub.local www.gamehub.local;

ssl_certificate /etc/nginx/certs/gamehub.local.crt;
ssl_certificate_key /etc/nginx/certs/gamehub.local.key;

include /etc/nginx/snippets/ssl-params.conf;
include /etc/nginx/snippets/security-headers.conf;

client_max_body_size 10M;

location /api/store/ {
proxy_pass http://store_service_upstream/;

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-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 300s;
proxy_connect_timeout 75s;
}

location /api/bank/ {
proxy_pass http://bank_service_upstream/;

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-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 300s;
proxy_connect_timeout 75s;
}

location / {
proxy_pass http://store_service_upstream/;
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-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 300s;
proxy_connect_timeout 75s;
}
listen 443 ssl;
listen [::]:443 ssl;
http2 on;

server_name gamehub.local www.gamehub.local;

ssl_certificate /etc/nginx/certs/gamehub.local.crt;
ssl_certificate_key /etc/nginx/certs/gamehub.local.key;

include /etc/nginx/snippets/ssl-params.conf;
include /etc/nginx/snippets/security-headers.conf;

client_max_body_size 10M;

location /api/bank/ {
proxy_pass http://bank_service_upstream/;

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-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 30s;
proxy_connect_timeout 15s;
}

location / {
proxy_pass http://store_service_upstream/;
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-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 30s;
proxy_connect_timeout 15s;
}
}
16 changes: 4 additions & 12 deletions store-service/uwsgi.ini
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,13 @@ wsgi-file = wsgi.py
callable = app

master = true
processes = 4 # Например
threads = 2 # Если приложение потокобезопасно
processes = 4
threads = 2
enable-threads = true

# Слушаем на HTTP порту, Nginx будет проксировать сюда
http = 0.0.0.0:5000
# или socket = /tmp/uwsgi.sock (тогда в Nginx `uwsgi_pass unix:/tmp/uwsgi.sock;`)

vacuum = true
buffer-size = 32768 # 32k обычно достаточно
buffer-size = 32768

# Убрать или закомментировать, если Nginx терминирует HTTPS
# env=HTTPS=on
# https=0.0.0.0:5000,/store/store.crt,/store/store.key

# Убрать mountpoint, если приложение должно быть в корне
# mountpoint=/store
module = wsgi # Или как называется твой главный модуль/файл с app
module = store