diff --git a/ansible/roles/cinder/defaults/main.yml b/ansible/roles/cinder/defaults/main.yml
index 90bbd2d8a0..8528a4375a 100644
--- a/ansible/roles/cinder/defaults/main.yml
+++ b/ansible/roles/cinder/defaults/main.yml
@@ -8,6 +8,7 @@ cinder_services:
     volumes: "{{ cinder_api_default_volumes + cinder_api_extra_volumes }}"
     dimensions: "{{ cinder_api_dimensions }}"
     healthcheck: "{{ cinder_api_healthcheck }}"
+    wsgi: "cinder.wsgi.api:application"
     haproxy:
       cinder_api:
         enabled: "{{ enable_cinder }}"
@@ -355,3 +356,8 @@ cinder_copy_certs: "{{ kolla_copy_ca_into_containers | bool or cinder_enable_tls
 ############
 cinder_cluster_name: ""
 cinder_cluster_skip_precheck: false
+
+############
+# WSGI
+############
+cinder_wsgi_provider: "uwsgi"
diff --git a/ansible/roles/cinder/tasks/config.yml b/ansible/roles/cinder/tasks/config.yml
index 5e7485a032..b4eb6f801d 100644
--- a/ansible/roles/cinder/tasks/config.yml
+++ b/ansible/roles/cinder/tasks/config.yml
@@ -64,7 +64,27 @@
     - "{{ node_custom_config }}/cinder/{{ inventory_hostname }}/cinder-wsgi.conf"
     - "{{ node_custom_config }}/cinder/cinder-wsgi.conf"
     - "cinder-wsgi.conf.j2"
-  when: service | service_enabled_and_mapped_to_host
+  when:
+    - service | service_enabled_and_mapped_to_host
+    - cinder_wsgi_provider == "apache"
+
+- name: "Configure uWSGI for Cinder"
+  include_role:
+    name: service-uwsgi-config
+  vars:
+    project_services: "{{ cinder_services }}"
+    service: "{{ cinder_services['cinder-api'] }}"
+    service_name: "cinder-api"
+    service_uwsgi_config_http_port: "{{ cinder_api_listen_port }}"
+    service_uwsgi_config_log_file_chmod: "644"
+    service_uwsgi_config_module: "{{ service.wsgi }}"
+    service_uwsgi_config_tls_backend: "{{ cinder_enable_tls_backend | bool }}"
+    service_uwsgi_config_tls_cert: "/etc/cinder/certs/cinder-cert.pem"
+    service_uwsgi_config_tls_key: "/etc/cinder/certs/cinder-key.pem"
+    service_uwsgi_config_uid: "cinder"
+  when:
+    - service | service_enabled_and_mapped_to_host
+    - cinder_wsgi_provider == "uwsgi"
 
 - name: Copying over cinder.conf
   vars:
diff --git a/ansible/roles/cinder/templates/cinder-api.json.j2 b/ansible/roles/cinder/templates/cinder-api.json.j2
index a5ae5a3e9e..04bb6781a5 100644
--- a/ansible/roles/cinder/templates/cinder-api.json.j2
+++ b/ansible/roles/cinder/templates/cinder-api.json.j2
@@ -1,20 +1,27 @@
 {% set cinder_cmd = 'apache2' if kolla_base_distro in ['ubuntu', 'debian'] else 'httpd' %}
 {% set cinder_dir = 'apache2/conf-enabled' if kolla_base_distro in ['ubuntu', 'debian'] else 'httpd/conf.d' %}
+{% set command = '/usr/sbin/{{ apache_binary }} -DFOREGROUND' if cinder_wsgi_provider == 'apache' else 'uwsgi /etc/cinder/cinder-api-uwsgi.ini' %}
 {
-    "command": "/usr/sbin/{{ cinder_cmd }} -DFOREGROUND",
+    "command": "{{ command }}",
     "config_files": [
         {
             "source": "{{ container_config_directory }}/cinder.conf",
             "dest": "/etc/cinder/cinder.conf",
             "owner": "cinder",
             "perm": "0600"
-        },
+        }{% if cinder_wsgi_provider == 'apache' %},
         {
             "source": "{{ container_config_directory }}/cinder-wsgi.conf",
             "dest": "/etc/{{ cinder_dir }}/cinder-wsgi.conf",
             "owner": "cinder",
             "perm": "0600"
-        }{% if cinder_policy_file is defined %},
+        }{% elif cinder_wsgi_provider == 'uwsgi' %},
+        {
+            "source": "{{ container_config_directory }}/cinder-api-uwsgi.ini",
+            "dest": "/etc/cinder/cinder-api-uwsgi.ini",
+            "owner": "cinder",
+            "perm": "0600"
+        }{% endif %}{% if cinder_policy_file is defined %},
         {
             "source": "{{ container_config_directory }}/{{ cinder_policy_file }}",
             "dest": "/etc/cinder/{{ cinder_policy_file }}",
diff --git a/releasenotes/notes/uwsgi-aef85ccbc76dab3e.yaml b/releasenotes/notes/uwsgi-aef85ccbc76dab3e.yaml
index a591c125b2..d579af5fbb 100644
--- a/releasenotes/notes/uwsgi-aef85ccbc76dab3e.yaml
+++ b/releasenotes/notes/uwsgi-aef85ccbc76dab3e.yaml
@@ -9,6 +9,8 @@ features:
 
       * - Service
         - Variable
+      * - Cinder
+        - cinder_wsgi_provider
       * - Nova
         - nova_wsgi_provider
       * - Placement