Nginx Server Configuration
Nginx Server Configuration
Depreciated
Yeni versiyonda artık Treafik web server kullanılmaktadır. Gerekli dökümantasyon için bakınız
Mikromax ERP servislerini dış dünyaya açmak için tavsiye edilen yöntem Nginx’i bir Docker konteyneri olarak çalıştırmaktır. Bu sayede Nginx, uygulama servisleriyle aynı Docker ağı üzerinde yer alır ve servis adlarını upstream adres olarak kullanabilir.
Klasör Yapısı
Aşağıdaki klasör yapısını sunucuda /etc/mikromax altında oluşturun:
/etc/mikromax/
└── nginx/
├── conf.d/ # Her servis için ayrı .conf dosyaları
│ ├── identity.conf
│ ├── api.conf
│ ├── web.conf
│ └── ... # Diğer servisler
└── certs/ # SSL sertifikalarınızı buraya kopyalayın
├── cert.crt
└── key.key
Not: Docker yönetimi Portainer üzerinden yapıldığı için sunucuda
docker-compose.ymlveya.envdosyası bulundurmanıza gerek yoktur. Stack tanımı ve ortam değişkenleri Portainer arayüzünden yönetilir.
Portainer Stack Tanımı
Nginx konteyneri Portainer üzerinden bir stack olarak dağıtılır. Portainer arayüzünde Stacks → Add stack menüsüne giderek aşağıdaki tanımı yapıştırın:
services:
nginx:
image: nginx:alpine
container_name: nginx-proxy
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- /etc/mikromax/nginx/conf.d:/etc/nginx/conf.d:ro
- /etc/mikromax/nginx/certs:/etc/nginx/certs:ro
networks:
- mikromax-network
networks:
mikromax-network:
external: true
Not:
mikromax-network, diğer uygulama servislerinin bağlı olduğu Docker ağının adıdır. Portainer üzerinden ağ adını doğrulayın ve gerekirse güncelleyin. Ortam değişkenleri Portainer stack ayarlarındaki Environment variables bölümünden tanımlanabilir.
Not: SSL sertifikalarınızı
./nginx/certs/dizininecert.crtvekey.keyadlarıyla kopyalayın. Sertifika dosya adları farklıysa aşağıdaki konfigürasyonlardassl_certificatesatırlarını buna göre güncelleyin.
Örnek Server Block (Şablon)
Her servis için ./nginx/conf.d/<site-adi>.conf adında bir dosya oluşturun.
Nginx, docker ağı üzerinden diğer konteynerlere servis adı ile erişir; localhost veya port numarasına gerek yoktur.
server {
listen 80;
server_name <your-subdomain.yourdomain.com>;
# HTTPS'e yönlendir
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name <your-subdomain.yourdomain.com>;
ssl_certificate /etc/nginx/certs/cert.crt;
ssl_certificate_key /etc/nginx/certs/key.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
proxy_pass http://<docker-service-name>:8080;
proxy_http_version 1.1;
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;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_read_timeout 300s;
}
}
Değişiklikleri uygulamak için:
docker exec nginx-proxy nginx -t
docker exec nginx-proxy nginx -s reload
Servis Port Listesi
Aşağıdaki servisler Docker Compose dosyasında açık port ile yayınlanmaktadır. Her biri için yukarıdaki şablonu kullanarak ayrı bir Nginx konfigürasyonu oluşturun.
| # | Servis | Konteyner Adı | Varsayılan Port | Açıklama |
|---|---|---|---|---|
| 1 | mmx-identity | identity |
7071 |
Kimlik doğrulama servisi |
| 2 | mmx-api | api |
7072 |
Ana REST API servisi |
| 3 | mmx-web | web |
7073 |
Web arayüzü |
| 4 | mmx-printing | printing |
7074 |
Yazdırma servisi (kullanıcıların da erişmesi gerekir) |
| 5 | mmx-bpm | bpm |
7076 |
BPM (İş Süreci Yönetimi) servisi |
| 6 | mmx-notificator | notificator |
7077 |
Bildirim servisi |
| 7 | mmx-reporting | reporting |
7078 |
Raporlama servisi |
| 8 | mmx-erp-extentions | erp-extentions |
7079 |
ERP eklenti servisi |
| 9 | seq | seq |
5341 |
Log görüntüleme arayüzü (altyapı) |
| 10 | rabbitmq | rabbitmq |
15672 |
RabbitMQ yönetim arayüzü (altyapı) |
| 11 | mmx-dashboard | dashboard |
7080 |
Dashboard arayüzü |
| 12 | portainer | portainer |
9000 | Portainer arayüzü |
Not:
mmx-mikro-transfervemmx-migratorservisleri harici port açmamaktadır; bu servisler için Nginx konfigürasyonu gerekmez.
Servis Başına Konfigürasyon Örnekleri
Her dosyayı ./nginx/conf.d/ dizinine kaydedin. Nginx konteyneri yeniden başlatıldığında tüm .conf dosyaları otomatik olarak yüklenir.
1. mmx-identity → ./nginx/conf.d/identity.conf
server {
listen 80;
server_name identity.yourdomain.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name identity.yourdomain.com;
ssl_certificate /etc/nginx/certs/cert.crt;
ssl_certificate_key /etc/nginx/certs/key.key;
location / {
proxy_pass http://mmx-identity:8080;
proxy_http_version 1.1;
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;
}
}
2. mmx-api → ./nginx/conf.d/api.conf
server {
listen 80;
server_name api.yourdomain.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name api.yourdomain.com;
ssl_certificate /etc/nginx/certs/cert.crt;
ssl_certificate_key /etc/nginx/certs/key.key;
location / {
proxy_pass http://mmx-api:8080;
proxy_http_version 1.1;
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;
proxy_read_timeout 300s;
}
}
3. mmx-web → ./nginx/conf.d/web.conf
server {
listen 80;
server_name web.yourdomain.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name web.yourdomain.com;
ssl_certificate /etc/nginx/certs/cert.crt;
ssl_certificate_key /etc/nginx/certs/key.key;
location / {
proxy_pass http://mmx-web:8080;
proxy_http_version 1.1;
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;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
}
}
4. mmx-printing → ./nginx/conf.d/printing.conf
server {
listen 80;
server_name printing.yourdomain.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name printing.yourdomain.com;
ssl_certificate /etc/nginx/certs/cert.crt;
ssl_certificate_key /etc/nginx/certs/key.key;
location / {
proxy_pass http://mmx-printing:8080;
proxy_http_version 1.1;
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;
}
}
5. mmx-bpm → ./nginx/conf.d/bpm.conf
server {
listen 80;
server_name bpm.yourdomain.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name bpm.yourdomain.com;
ssl_certificate /etc/nginx/certs/cert.crt;
ssl_certificate_key /etc/nginx/certs/key.key;
location / {
proxy_pass http://mmx-bpm:8080;
proxy_http_version 1.1;
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;
}
}
6. mmx-notificator → ./nginx/conf.d/notificator.conf
server {
listen 80;
server_name notificator.yourdomain.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name notificator.yourdomain.com;
ssl_certificate /etc/nginx/certs/cert.crt;
ssl_certificate_key /etc/nginx/certs/key.key;
location / {
proxy_pass http://mmx-notificator:8080;
proxy_http_version 1.1;
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;
}
}
7. mmx-reporting → ./nginx/conf.d/reporting.conf
server {
listen 80;
server_name reporting.yourdomain.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name reporting.yourdomain.com;
ssl_certificate /etc/nginx/certs/cert.crt;
ssl_certificate_key /etc/nginx/certs/key.key;
location / {
proxy_pass http://mmx-reporting:8080;
proxy_http_version 1.1;
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;
}
}
8. mmx-erp-extentions → ./nginx/conf.d/erp-extentions.conf
server {
listen 80;
server_name ext.yourdomain.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name ext.yourdomain.com;
ssl_certificate /etc/nginx/certs/cert.crt;
ssl_certificate_key /etc/nginx/certs/key.key;
location / {
proxy_pass http://mmx-erp-extentions:8080;
proxy_http_version 1.1;
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;
}
}
9. seq — Log Arayüzü → ./nginx/conf.d/seq.conf
Seq arayüzüne yalnızca yetkili personelin erişmesi önerilir. Gerekirse IP kısıtlaması ekleyin.
server {
listen 443 ssl;
server_name seq.yourdomain.com;
ssl_certificate /etc/nginx/certs/cert.crt;
ssl_certificate_key /etc/nginx/certs/key.key;
# İsteğe bağlı: erişimi belirli IP'lerle kısıtla
# allow 10.0.0.0/8;
# deny all;
location / {
proxy_pass http://seq:80;
proxy_http_version 1.1;
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;
}
}
10. rabbitmq — Yönetim Arayüzü → ./nginx/conf.d/rabbitmq.conf
RabbitMQ yönetim arayüzüne yalnızca yetkili personelin erişmesi önerilir.
server {
listen 443 ssl;
server_name rabbitmq.yourdomain.com;
ssl_certificate /etc/nginx/certs/cert.crt;
ssl_certificate_key /etc/nginx/certs/key.key;
# İsteğe bağlı: erişimi belirli IP'lerle kısıtla
# allow 10.0.0.0/8;
# deny all;
location / {
proxy_pass http://rabbitmq:15672;
proxy_http_version 1.1;
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;
}
}
Nginx Konteynerini Yeniden Yükleme
Yeni bir konfigürasyon dosyası ekledikten veya mevcut birini düzenledikten sonra:
# Konfigürasyonu test et
docker exec nginx-proxy nginx -t
# Nginx'i yeniden yükle (kesintisiz)
docker exec nginx-proxy nginx -s reload
Alternatif olarak Portainer arayüzünden Containers → nginx-proxy → Recreate seçeneğini kullanarak konteyneri yeniden başlatabilirsiniz.