416 lines
14 KiB
Nginx Configuration File
416 lines
14 KiB
Nginx Configuration File
|
|
resolver 127.0.0.11 valid=300s ipv6=off;
|
|
resolver_timeout 5s;
|
|
|
|
# 1. Gitea (git.irfartak.com) - HTTP
|
|
server {
|
|
listen 80;
|
|
server_name git.irfartak.com;
|
|
client_max_body_size 512M;
|
|
|
|
location / {
|
|
set $upstream_gitea http://gitea-srv:3000;
|
|
proxy_pass $upstream_gitea;
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
proxy_set_header Connection "upgrade";
|
|
proxy_set_header Host $http_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;
|
|
}
|
|
}
|
|
|
|
# 2. Gitea (git.irfartak.com) - HTTPS
|
|
server {
|
|
listen 443 ssl;
|
|
server_name git.irfartak.com;
|
|
|
|
ssl_certificate /etc/nginx/certs-git/fullchain.pem;
|
|
ssl_certificate_key /etc/nginx/certs-git/privkey.pem;
|
|
|
|
ssl_protocols TLSv1.2 TLSv1.3;
|
|
ssl_ciphers HIGH:!aNULL:!MD5;
|
|
client_max_body_size 512M;
|
|
|
|
location / {
|
|
set $upstream_gitea http://gitea-srv:3000;
|
|
proxy_pass $upstream_gitea;
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
proxy_set_header Connection "upgrade";
|
|
proxy_set_header Host $http_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 https;
|
|
}
|
|
}
|
|
|
|
# 3. Statista (statista.steelforesight.ir) - HTTP
|
|
server {
|
|
listen 80;
|
|
server_name statista.steelforesight.ir;
|
|
|
|
location /api/ {
|
|
set $upstream_backend http://statista-backend-1:8000;
|
|
proxy_pass $upstream_backend;
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Host $http_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;
|
|
}
|
|
|
|
location /ws/ {
|
|
set $upstream_backend http://statista-backend-1:8000;
|
|
proxy_pass $upstream_backend;
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
proxy_set_header Connection "upgrade";
|
|
proxy_set_header Host $http_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;
|
|
}
|
|
|
|
# Smart Routing for root /:
|
|
# If request has Authorization header OR query param token/api_token, serve JSON data (/api/tree).
|
|
# Otherwise, if it is a normal browser visit, serve React Dashboard UI.
|
|
location = / {
|
|
set $backend_target "0";
|
|
if ($http_authorization ~* ".+") {
|
|
set $backend_target "1";
|
|
}
|
|
if ($arg_api_token ~* ".+") {
|
|
set $backend_target "1";
|
|
}
|
|
if ($arg_token ~* ".+") {
|
|
set $backend_target "1";
|
|
}
|
|
if ($http_accept ~* "application/json") {
|
|
set $backend_target "1";
|
|
}
|
|
|
|
if ($backend_target = "1") {
|
|
rewrite ^ /api/tree break;
|
|
proxy_pass http://statista-backend-1:8000;
|
|
}
|
|
|
|
set $upstream_frontend http://statista-frontend-1:3000;
|
|
proxy_pass $upstream_frontend;
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
proxy_set_header Connection "upgrade";
|
|
proxy_set_header Host $http_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;
|
|
}
|
|
|
|
location / {
|
|
set $upstream_frontend http://statista-frontend-1:3000;
|
|
proxy_pass $upstream_frontend;
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
proxy_set_header Connection "upgrade";
|
|
proxy_set_header Host $http_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;
|
|
}
|
|
}
|
|
|
|
# 4. Statista (statista.steelforesight.ir) - HTTPS (Port 443)
|
|
server {
|
|
listen 443 ssl;
|
|
server_name statista.steelforesight.ir;
|
|
|
|
ssl_certificate /etc/nginx/certs/fullchain.pem;
|
|
ssl_certificate_key /etc/nginx/certs/privkey.pem;
|
|
|
|
ssl_protocols TLSv1.2 TLSv1.3;
|
|
ssl_ciphers HIGH:!aNULL:!MD5;
|
|
|
|
location /api/ {
|
|
set $upstream_backend http://statista-backend-1:8000;
|
|
proxy_pass $upstream_backend;
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Host $http_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 https;
|
|
}
|
|
|
|
location /ws/ {
|
|
set $upstream_backend http://statista-backend-1:8000;
|
|
proxy_pass $upstream_backend;
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
proxy_set_header Connection "upgrade";
|
|
proxy_set_header Host $http_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 https;
|
|
}
|
|
|
|
# Smart Routing for root /:
|
|
# If request has Authorization header OR query param token/api_token, serve JSON data (/api/tree).
|
|
# Otherwise, if it is a normal browser visit, serve React Dashboard UI.
|
|
location = / {
|
|
set $backend_target "0";
|
|
if ($http_authorization ~* ".+") {
|
|
set $backend_target "1";
|
|
}
|
|
if ($arg_api_token ~* ".+") {
|
|
set $backend_target "1";
|
|
}
|
|
if ($arg_token ~* ".+") {
|
|
set $backend_target "1";
|
|
}
|
|
if ($http_accept ~* "application/json") {
|
|
set $backend_target "1";
|
|
}
|
|
|
|
if ($backend_target = "1") {
|
|
rewrite ^ /api/tree break;
|
|
proxy_pass http://statista-backend-1:8000;
|
|
}
|
|
|
|
set $upstream_frontend http://statista-frontend-1:3000;
|
|
proxy_pass $upstream_frontend;
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
proxy_set_header Connection "upgrade";
|
|
proxy_set_header Host $http_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 https;
|
|
}
|
|
|
|
location / {
|
|
set $upstream_frontend http://statista-frontend-1:3000;
|
|
proxy_pass $upstream_frontend;
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
proxy_set_header Connection "upgrade";
|
|
proxy_set_header Host $http_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 https;
|
|
}
|
|
}
|
|
|
|
# 5. Iranian Futurist Main Portal
|
|
server {
|
|
listen 80;
|
|
server_name iranianfuturist.com www.iranianfuturist.com;
|
|
|
|
location / {
|
|
set $upstream_if http://if-react-frontend:80;
|
|
proxy_pass $upstream_if;
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
proxy_set_header Connection 'upgrade';
|
|
proxy_set_header Host $http_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;
|
|
}
|
|
}
|
|
|
|
# 6. IRFartak
|
|
server {
|
|
listen 80;
|
|
server_name irfartak.com www.irfartak.com;
|
|
|
|
location /api/ {
|
|
set $upstream_fartak_api http://irfartak-backend-1:3000;
|
|
proxy_pass $upstream_fartak_api;
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Host $http_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;
|
|
}
|
|
|
|
location / {
|
|
set $upstream_fartak_fe http://irfartak-frontend-1:3000;
|
|
proxy_pass $upstream_fartak_fe;
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
proxy_set_header Connection "upgrade";
|
|
proxy_set_header Host $http_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;
|
|
}
|
|
}
|
|
|
|
# 7. Default Fallback Server
|
|
server {
|
|
listen 80 default_server;
|
|
server_name _;
|
|
|
|
location /statista-api/ {
|
|
rewrite ^/statista-api/(.*)$ /api/$1 break;
|
|
set $upstream_backend http://statista-backend-1:8000;
|
|
proxy_pass $upstream_backend;
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Host $http_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;
|
|
}
|
|
|
|
location / {
|
|
set $upstream_if http://if-react-frontend:80;
|
|
proxy_pass $upstream_if;
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
proxy_set_header Connection 'upgrade';
|
|
proxy_set_header Host $http_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;
|
|
}
|
|
}
|
|
|
|
|
|
# Iranian Futurist - HTTPS
|
|
server {
|
|
listen 443 ssl;
|
|
server_name iranianfuturist.com www.iranianfuturist.com;
|
|
|
|
ssl_certificate /etc/nginx/certs-git/fullchain.pem;
|
|
ssl_certificate_key /etc/nginx/certs-git/privkey.pem;
|
|
|
|
ssl_protocols TLSv1.2 TLSv1.3;
|
|
ssl_ciphers HIGH:!aNULL:!MD5;
|
|
|
|
location / {
|
|
set $upstream_if http://if-react-frontend:80;
|
|
proxy_pass $upstream_if;
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
proxy_set_header Connection 'upgrade';
|
|
proxy_set_header Host $http_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 https;
|
|
}
|
|
}
|
|
|
|
# 6b. IRFartak .com HTTPS
|
|
server {
|
|
listen 443 ssl;
|
|
server_name irfartak.com www.irfartak.com;
|
|
ssl_certificate /etc/nginx/certs-git/fullchain.pem;
|
|
ssl_certificate_key /etc/nginx/certs-git/privkey.pem;
|
|
location / {
|
|
set $up_a http://irfartak-frontend-1:3000;
|
|
proxy_pass $up_a;
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
proxy_set_header Connection upgrade;
|
|
proxy_set_header Host $http_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;
|
|
}
|
|
}
|
|
|
|
# 6c. IRFartak .ir HTTP
|
|
server {
|
|
listen 80;
|
|
server_name irfartak.ir www.irfartak.ir;
|
|
location / {
|
|
set $up_b http://irfartak-frontend-1:3000;
|
|
proxy_pass $up_b;
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
proxy_set_header Connection upgrade;
|
|
proxy_set_header Host $http_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;
|
|
}
|
|
}
|
|
|
|
# 6d. IRFartak .ir HTTPS
|
|
server {
|
|
listen 443 ssl;
|
|
server_name irfartak.ir www.irfartak.ir;
|
|
ssl_certificate /etc/nginx/certs-git/fullchain.pem;
|
|
ssl_certificate_key /etc/nginx/certs-git/privkey.pem;
|
|
location / {
|
|
set $up_c http://irfartak-frontend-1:3000;
|
|
proxy_pass $up_c;
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
proxy_set_header Connection upgrade;
|
|
proxy_set_header Host $http_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;
|
|
}
|
|
}
|
|
|
|
# 9. TLS catch-all - unknown SNI must not land on Gitea
|
|
server {
|
|
listen 443 ssl default_server;
|
|
server_name _;
|
|
ssl_certificate /etc/nginx/certs-git/fullchain.pem;
|
|
ssl_certificate_key /etc/nginx/certs-git/privkey.pem;
|
|
return 444;
|
|
|
|
}
|
|
# --- CMS (Directus) ---
|
|
server {
|
|
listen 80;
|
|
server_name cms.irfartak.com;
|
|
|
|
location /.well-known/acme-challenge/ {
|
|
root /var/www/certbot;
|
|
default_type "text/plain";
|
|
}
|
|
|
|
location / {
|
|
resolver 127.0.0.11 valid=30s;
|
|
set $upstream_cms http://cms:8055;
|
|
proxy_pass $upstream_cms;
|
|
proxy_http_version 1.1;
|
|
client_max_body_size 100m;
|
|
proxy_read_timeout 300s;
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
proxy_set_header Connection "upgrade";
|
|
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;
|
|
}
|
|
}
|
|
|
|
# --- CMS (Directus) HTTPS ---
|
|
server {
|
|
listen 443 ssl;
|
|
server_name cms.irfartak.com;
|
|
|
|
ssl_certificate /etc/nginx/certs/cms/fullchain.pem;
|
|
ssl_certificate_key /etc/nginx/certs/cms/privkey.pem;
|
|
|
|
location / {
|
|
resolver 127.0.0.11 valid=30s;
|
|
set $upstream_cms_s http://cms:8055;
|
|
proxy_pass $upstream_cms_s;
|
|
proxy_http_version 1.1;
|
|
client_max_body_size 100m;
|
|
proxy_read_timeout 300s;
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
proxy_set_header Connection "upgrade";
|
|
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 https;
|
|
}
|
|
}
|