Can the same vService listen on both port 80 and port 443?
Short answer
Yes. A separate row is added to the vService's Frontend table for each port, and the Protocol value of each row is selected separately. In a typical configuration, the 443 row is defined with HTTP/2 (or HTTP/1.1) and a Certificate, and the 80 row with HTTP → HTTPS: requests arriving at 443 are processed, and clients arriving at 80 unencrypted are redirected to the HTTPS address with 301. All the rows in the same vService use the same rules, profiles and Backend Services.
Problem: Why Are Two Ports Needed for the Same Site?
Users can arrive by typing http:// in the address bar or by typing only the domain name; these requests land on port 80. If the site is published with HTTPS, the clients arriving at 80 need to be redirected to HTTPS. Opening a separate vService for the two ports means defining the rules, profiles and Backend Services twice.
Solution
Two Frontend Rows in a Single vService
- How it works Each frontend row is an independent listening point; the rows share the settings of the same vService. The HTTP → HTTPS row redirects an unencrypted request arriving at that port to HTTPS with 301.
- Where it is opened vService → Frontend table → Port and Protocol for each row
- Requirement A certificate uploaded to TR7 for the 443 row
- vService type HTTP (multiple rows are also added in L7 TCP; the HTTP → HTTPS option exists only in HTTP)
- Backend Service side No change is required; requests from both rows go to the same Backend Services.
Step-by-Step Configuration
If the certificate of the domain name is not on TR7, it is uploaded with Certificates & PKI → SSL/TLS Certificates → Add (How do I upload my certificate to TR7; which formats are supported?).
On the Load Balancer → Load Balancer vService List screen, the HTTP vService is selected and the Edit button is clicked.
In the Frontend table, the IP is selected, the port is set to 443, and HTTP/2 is selected as the Protocol from the Encrypted (HTTPS) group.
In the Certificate field that appears, the certificate of the domain name is selected.
A second row is added with the (+) icon in the Frontend table header; the same IP is selected, the port stays 80, and HTTP → HTTPS is selected as the Protocol from the Redirect group.
The Save button is clicked. In a cluster setup, the change is also transferred to the peer device with the default auto-sync; if Manual Sync Mode is on, it is sent manually with Synchronize.
Verification
curl -I http://www.example.comHTTP/1.1 301 · location: https://www.example.com/curl -I https://www.example.comHTTP/2 200Common Mistakes
- Not selecting a certificate in the 443 row. The form does not prevent saving, but the row listens as unencrypted HTTP.
- Adding two rows for the same port. For ports that collide on the same IP, the form shows the "Port collision" error and the record is not saved.
- Leaving the 80 row as HTTP. Requests arriving at 80 are processed unencrypted; for the redirect, HTTP → HTTPS is selected as the Protocol.
- Looking for HTTP → HTTPS in L7 TCP. The redirect option exists only in the HTTP vService.
How it is done in the documentation
