Acceldata
ODP

Last updated: Sep 21, 2026 22:25 UTC

Install NGINX and Configure for MLflow

Set up NGINX as a reverse proxy to route secure external traffic to your MLflow server.


Prerequisites

  • Linux-based server (RHEL/CentOS or Ubuntu/Debian)
  • Root or sudo privileges
  • MLflow server running on port 5000
  • SSL certificate and private key files (e.g., cert.pem and key.pem)


Steps to install

  • Install Nginx: Choose the appropriate command based on your Linux distribution.

For RHEL/CentOS:

sudo yum install -y nginx

For Ubuntu/Debian:

sudo apt install -y nginx
  • Configure the NGINX main file (/etc/nginx/nginx.conf)

Info

Use the following NGINX configuration to set up a reverse proxy with performance optimizations:

cat _etc_nginx_nginx.conf
# For more information on configuration, see:
#   * Official English Documentation: http:__nginx.org_en_docs_
#   * Official Russian Documentation: http:__nginx.org_ru_docs_

user nginx;
worker_processes auto;
error_log _var_log_nginx_error.log;
pid _run_nginx.pid;
# Load dynamic modules. See _usr_share_doc_nginx_README.dynamic.
include _usr_share_nginx_modules_*.conf;

events {
 worker_connections 1024;
}

http {
 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;
 tcp_nodelay on;
 keepalive_timeout 65;
 types_hash_max_size 2048;
 include _etc_nginx_mime.types;
 default_type application_octet-stream;
 # Load modular configuration files from the _etc_nginx_conf.d directory.
 # See http:__nginx.org_en_docs_ngx_core_module.html#include
 # for more information.
 include _etc_nginx_conf.d_*.conf;
 server {
 listen 80 default_server;
 listen [::]:80 default_server;
 server_name _;
 root _usr_share_nginx_html;
 # Load configuration files for the default server block.
 include _etc_nginx_default.d_*.conf;
 location _ {
 }
 error_page 404 _404.html;
 location = _40x.html {
 }
 error_page 500 502 503 504 _50x.html;
 location = _50x.html {
 }
 }
# Settings for a TLS enabled server.
#
#    server {
#        listen       443 ssl http2 default_server;
#        listen       [::]:443 ssl http2 default_server;
#        server_name  _;
#        root         _usr_share_nginx_html;
#
#        ssl_certificate "_etc_pki_nginx_server.crt";
#        ssl_certificate_key "_etc_pki_nginx_private_server.key";
#        ssl_session_cache shared:SSL:1m;
#        ssl_session_timeout  10m;
#        ssl_ciphers PROFILE=SYSTEM;
#        ssl_prefer_server_ciphers on;
#
#        # Load configuration files for the default server block.
#        include _etc_nginx_default.d_*.conf;
#
#        location _ {
#        }
#
#        error_page 404 _404.html;
#            location = _40x.html {
#        }
#
#        error_page 500 502 503 504 _50x.html;
#            location = _50x.html {
#        }
#    }
}
  • Configure reverse proxy for MLflow (/etc/nginx/conf.d/mlflow.conf)

This configuration:

  • Redirects all HTTP traffic to HTTPS
  • Proxies HTTPS requests securely to the MLflow server
cat _etc_nginx_conf.d_mlflow.conf
# Redirect all HTTP requests to HTTPS
server {
 listen 80;
 server_name 10.100.11.26;
 location _ {
 return 301 https:__$host$request_uri;
 }
}
# Main SSL-secured MLflow server block
server {
 listen 443 ssl;
 server_name mlflow.yourdomain.com;
 ssl_certificate _usr_odp_3.3.6.2-1006_mlflow_cert.pem;
 ssl_certificate_key _usr_odp_3.3.6.2-1006_mlflow_key.pem;
 ssl_session_cache shared:SSL:10m;
 ssl_session_timeout 10m;
 ssl_protocols TLSv1.2 TLSv1.3;
 ssl_ciphers HIGH:!aNULL:!MD5;
 location _ {
 proxy_pass http:__10.100.11.26:5000;
 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;
 }
}

Note

  • Replace mlflow.yourdomain.com with your actual domain or public IP.
  • Update SSL certificate paths to match your environment.
  • Replace 10.100.11.26:5000 with your MLflow backend server address and port.
  • Start and enable Nginx.
sudo systemctl start nginx
sudo systemctl enable nginx

To verify Nginx is running:

sudo systemctl status nginx
  • Reload the configuration after any change.
sudo nginx -t # Validate config
sudo systemctl reload nginx


References