diff --git a/interface-definitions/https.xml b/interface-definitions/https.xml
index 2fb3bf082..f5d609f95 100644
--- a/interface-definitions/https.xml
+++ b/interface-definitions/https.xml
@@ -1,123 +1,135 @@
 <?xml version="1.0"?>
 <!-- HTTPS configuration -->
 <interfaceDefinition>
   <node name="service">
     <children>
       <node name="https" owner="${vyos_conf_scripts_dir}/https.py">
         <properties>
           <help>HTTPS configuration</help>
           <priority>1001</priority>
         </properties>
         <children>
           <tagNode name="listen-address">
             <properties>
               <help>Addresses to listen for HTTPS requests</help>
               <valueHelp>
                 <format>ipv4</format>
                 <description>HTTPS IPv4 address</description>
               </valueHelp>
               <valueHelp>
                 <format>ipv6</format>
                 <description>HTTPS IPv6 address</description>
               </valueHelp>
               <valueHelp>
                 <format>'*'</format>
                 <description>any</description>
               </valueHelp>
               <constraint>
                 <validator name="ipv4-address"/>
                 <validator name="ipv6-address"/>
                 <regex>^\\*$</regex>
               </constraint>
             </properties>
             <children>
+              <leafNode name='listen-port'>
+                <properties>
+                  <help>Port to listen for HTTPS requests; default 443</help>
+                  <valueHelp>
+                    <format>1-65535</format>
+                    <description>Numeric IP port</description>
+                  </valueHelp>
+                  <constraint>
+                    <validator name="numeric" argument="--range 1-65535"/>
+                  </constraint>
+                </properties>
+              </leafNode>
               <leafNode name="server-name">
                 <properties>
                   <help>Server names: exact, wildcard, regex, or '_' (any)</help>
                   <multi/>
                 </properties>
               </leafNode>
             </children>
           </tagNode>
           <node name="certificates">
             <properties>
               <help>TLS certificates</help>
             </properties>
             <children>
               <node name="system-generated-certificate" owner="${vyos_conf_scripts_dir}/vyos_cert.py">
                 <properties>
                   <help>Use an automatically generated self-signed certificate</help>
                   <valueless/>
                 </properties>
                 <children>
                   <leafNode name="lifetime">
                     <properties>
                       <help>Lifetime in days; default is 365</help>
                       <valueHelp>
                         <format>1-65535</format>
                         <description>Number of days</description>
                       </valueHelp>
                     </properties>
                   </leafNode>
                 </children>
               </node>
             </children>
           </node>
           <node name="api" owner="${vyos_conf_scripts_dir}/http-api.py">
             <properties>
               <help>VyOS HTTP API configuration</help>
               <priority>1002</priority>
             </properties>
             <children>
               <leafNode name="port">
                 <properties>
                   <help>Port for HTTP API service</help>
                   <valueHelp>
                     <format>1-65535</format>
                     <description>Numeric IP port</description>
                   </valueHelp>
                   <constraint>
                     <validator name="numeric" argument="--range 1-65535"/>
                   </constraint>
                 </properties>
               </leafNode>
               <node name="keys">
                 <properties>
                   <help>HTTP API keys</help>
                 </properties>
                 <children>
                   <tagNode name="id">
                     <properties>
                       <help>HTTP API id</help>
                     </properties>
                     <children>
                       <leafNode name="key">
                         <properties>
                           <help>HTTP API plaintext key</help>
                         </properties>
                       </leafNode>
                     </children>
                   </tagNode>
                 </children>
               </node>
               <leafNode name="strict">
                 <properties>
                   <help>Enforce strict path checking</help>
                   <valueless/>
                 </properties>
               </leafNode>
               <leafNode name="debug">
                 <properties>
                   <help>Debug</help>
                   <valueless/>
                   <hidden/>
                 </properties>
               </leafNode>
             </children>
           </node>
         </children>
       </node>
     </children>
   </node>
 </interfaceDefinition>
 
diff --git a/src/conf_mode/https.py b/src/conf_mode/https.py
index d7fcb74de..fbd351e45 100755
--- a/src/conf_mode/https.py
+++ b/src/conf_mode/https.py
@@ -1,171 +1,175 @@
 #!/usr/bin/env python3
 #
 # Copyright (C) 2019 VyOS maintainers and contributors
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License version 2 or later as
 # published by the Free Software Foundation.
 #
 # This program is distributed in the hope that it will be useful,
 # but WITHOUT ANY WARRANTY; without even the implied warranty of
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 # GNU General Public License for more details.
 #
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #
 #
 
 import sys
 import os
 
 import jinja2
 
 import vyos.defaults
 from vyos.config import Config
 from vyos import ConfigError
 
 config_file = '/etc/nginx/sites-available/default'
 
 # Please be careful if you edit the template.
 config_tmpl = """
 
 ### Autogenerated by https.py ###
 # Default server configuration
 #
 server {
         listen 80 default_server;
         listen [::]:80 default_server;
         server_name _;
         return 301 https://$server_name$request_uri;
 }
 
 {% for server in server_block_list %}
 server {
 
         # SSL configuration
         #
 {% if server.address == '*' %}
         listen 443 ssl;
         listen [::]:443 ssl;
 {% else %}
-        listen {{ server.address }}:443 ssl;
+        listen {{ server.address }}:{{ server.port }} ssl;
 {% endif %}
 
 {% for name in server.name %}
         server_name {{ name }};
 {% endfor %}
 
 {% if server.vyos_cert %}
         include {{ server.vyos_cert.conf }};
 {% else %}
         #
         # Self signed certs generated by the ssl-cert package
         # Don't use them in a production server!
         #
         include snippets/snakeoil.conf;
 {% endif %}
 
         # proxy settings for HTTP API, if enabled; 503, if not
         location ~ /(retrieve|configure|config-file|image) {
 {% if server.api %}
                 proxy_pass http://localhost:{{ server.api.port }};
                 proxy_buffering off;
 {% else %}
                 return 503;
 {% endif %}
         }
 
         error_page 501 502 503 =200 @50*_json;
 
         location @50*_json {
                 default_type application/json;
                 return 200 '{"error": "Start service in configuration mode: set service https api"}';
         }
 
 }
 
 {% endfor %}
 """
 
 default_server_block = {
     'address'   : '*',
     'name'      : ['_'],
     # api       :
     # vyos_cert :
     # le_cert   :
 }
 
 def get_config():
     server_block_list = []
     conf = Config()
     if not conf.exists('service https'):
         return None
     else:
         conf.set_level('service https')
 
     if conf.exists('listen-address'):
         for addr in conf.list_nodes('listen-address'):
             server_block = {'address' : addr}
+            server_block['port'] = '443'
             server_block['name'] = ['_']
+            if conf.exists('listen-address {0} listen-port'.format(addr)):
+                port = conf.return_value('listen-address {0} listen-port'.format(addr))
+                server_block['port'] = port
             if conf.exists('listen-address {0} server-name'.format(addr)):
                 names = conf.return_values('listen-address {0} server-name'.format(addr))
                 server_block['name'] = names[:]
             server_block_list.append(server_block)
 
     if not server_block_list:
         server_block_list.append(default_server_block)
 
     vyos_cert_data = {}
     if conf.exists('certificates'):
         if conf.exists('certificates system-generated-certificate'):
             vyos_cert_data = vyos.defaults.vyos_cert_data
     if vyos_cert_data:
         for block in server_block_list:
             block['vyos_cert'] = vyos_cert_data
 
     api_data = {}
     if conf.exists('api'):
         api_data = vyos.defaults.api_data
         if conf.exists('api port'):
             port = conf.return_value('api port')
             api_data['port'] = port
     if api_data:
         for block in server_block_list:
             block['api'] = api_data
 
     https = {'server_block_list' : server_block_list}
     return https
 
 def verify(https):
     return None
 
 def generate(https):
     if https is None:
         return None
 
     if 'server_block_list' not in https or not https['server_block_list']:
         https['server_block_list'] = [default_server_block]
 
     tmpl = jinja2.Template(config_tmpl, trim_blocks=True)
     config_text = tmpl.render(https)
     with open(config_file, 'w') as f:
         f.write(config_text)
 
     return None
 
 def apply(https):
     if https is not None:
         os.system('sudo systemctl restart nginx.service')
     else:
         os.system('sudo systemctl stop nginx.service')
 
 if __name__ == '__main__':
     try:
         c = get_config()
         verify(c)
         generate(c)
         apply(c)
     except ConfigError as e:
         print(e)
         sys.exit(1)