Files
roa2web-service-auto/nginx/conf/sites-enabled/roa2web.conf
Marius Mutu 6b13ffa183 Initial commit: ROA2WEB - FastAPI + Vue.js + Telegram Bot
Modern ERP Reports Application with microservices architecture

Tech Stack:
- Backend: FastAPI + python-oracledb (Oracle DB integration)
- Frontend: Vue.js 3 + PrimeVue + Vite
- Telegram Bot: python-telegram-bot + SQLite
- Infrastructure: Shared database pool, JWT authentication, SSH tunnel

Features:
- FastAPI backend with async Oracle connection pool
- Vue.js 3 responsive frontend with PrimeVue components
- Telegram bot alternative interface
- Microservices architecture with shared components
- Complete deployment support (Linux Docker + Windows IIS)
- Comprehensive testing (Playwright E2E + pytest)

Repository Structure:
- reports-app/ - Main application (backend, frontend, telegram-bot)
- shared/ - Shared components (database pool, auth, utils)
- deployment/ - Deployment scripts (Linux & Windows)
- docs/ - Project documentation
- security/ - Security scanning and git hooks
2025-10-25 14:55:08 +03:00

172 lines
4.9 KiB
Plaintext

# ROA2WEB Virtual Host Configuration
# HTTP server for development (no redirect)
server {
listen 80;
server_name localhost roa2web.local;
# Let's Encrypt challenge (for future production use)
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}
# Development: serve content directly via HTTP
location /api/ {
proxy_pass http://roa_backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /health {
proxy_pass http://roa_backend/health;
proxy_set_header Host $host;
}
location /api/health {
proxy_pass http://roa_backend/health;
proxy_set_header Host $host;
}
location / {
proxy_pass http://roa_frontend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
# HTTPS main server (disabled for development)
# server {
# listen 443 ssl http2;
# server_name localhost roa2web.local;
#
# # SSL configuration
# include /etc/nginx/conf.d/ssl.conf;
#
# # Security headers
# include /etc/nginx/conf.d/security.conf;
#
# # Logging
# access_log /var/log/nginx/roa2web_access.log main;
# error_log /var/log/nginx/roa2web_error.log warn;
#
# # API routes - proxy to FastAPI backend
# location /api/ {
# # Rate limiting for API
# limit_req zone=api burst=20 nodelay;
#
# # Proxy configuration
# proxy_pass http://roa_backend;
# 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_set_header X-Forwarded-Host $host;
# proxy_set_header X-Forwarded-Port $server_port;
#
# # Timeouts
# proxy_connect_timeout 30s;
# proxy_send_timeout 30s;
# proxy_read_timeout 30s;
#
# # Buffering
# proxy_buffering on;
# proxy_buffer_size 4k;
# proxy_buffers 8 4k;
#
# # No caching for API responses
# add_header Cache-Control "no-cache, no-store, must-revalidate";
# add_header Pragma "no-cache";
# add_header Expires "0";
# }
#
# # Health check endpoints
# location /health {
# access_log off;
# proxy_pass http://health_backend/health;
# proxy_set_header Host $host;
# }
#
# # Backend health check
# location /api/health {
# access_log off;
# proxy_pass http://roa_backend/health;
# proxy_set_header Host $host;
# }
#
# # Static assets with caching
# location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
# limit_req zone=static burst=50 nodelay;
#
# proxy_pass http://roa_frontend;
# proxy_set_header Host $host;
#
# # Long-term caching for assets with hash
# expires 1y;
# add_header Cache-Control "public, immutable";
# add_header Vary "Accept-Encoding";
#
# # Gzip compression
# gzip_static on;
# }
#
# # Frontend SPA - everything else goes to Vue.js
# location / {
# limit_req zone=static burst=100 nodelay;
#
# proxy_pass http://roa_frontend;
# 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;
#
# # Short caching for HTML files
# add_header Cache-Control "no-cache, must-revalidate";
# expires 5m;
# }
#
# # Deny access to sensitive files
# location ~ /\. {
# deny all;
# access_log off;
# log_not_found off;
# }
#
# location ~ \.(sql|env|key|pem)$ {
# deny all;
# access_log off;
# log_not_found off;
# }
# }
# Development HTTP server (for local development)
server {
listen 8080;
server_name dev.localhost;
# Simple HTTP setup for development
location /api/ {
proxy_pass http://roa_backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /health {
proxy_pass http://roa_backend/health;
proxy_set_header Host $host;
}
location /api/health {
proxy_pass http://roa_backend/health;
proxy_set_header Host $host;
}
location / {
proxy_pass http://roa_frontend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}