mirror of
https://github.com/NginxProxyManager/nginx-proxy-manager.git
synced 2025-10-05 04:10:10 +00:00
Compare commits
3 Commits
b1dc805cd0
...
v2.12.2
Author | SHA1 | Date | |
---|---|---|---|
|
b4f49969d6 | ||
|
5084cb7296 | ||
|
e677bfa2e8 |
6
Jenkinsfile
vendored
6
Jenkinsfile
vendored
@@ -128,7 +128,7 @@ pipeline {
|
|||||||
sh 'docker-compose down --remove-orphans --volumes -t 30 || true'
|
sh 'docker-compose down --remove-orphans --volumes -t 30 || true'
|
||||||
}
|
}
|
||||||
unstable {
|
unstable {
|
||||||
dir(path: 'test/results') {
|
dir(path: 'testing/results') {
|
||||||
archiveArtifacts(allowEmptyArchive: true, artifacts: '**/*', excludes: '**/*.xml')
|
archiveArtifacts(allowEmptyArchive: true, artifacts: '**/*', excludes: '**/*.xml')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -161,7 +161,7 @@ pipeline {
|
|||||||
sh 'docker-compose down --remove-orphans --volumes -t 30 || true'
|
sh 'docker-compose down --remove-orphans --volumes -t 30 || true'
|
||||||
}
|
}
|
||||||
unstable {
|
unstable {
|
||||||
dir(path: 'test/results') {
|
dir(path: 'testing/results') {
|
||||||
archiveArtifacts(allowEmptyArchive: true, artifacts: '**/*', excludes: '**/*.xml')
|
archiveArtifacts(allowEmptyArchive: true, artifacts: '**/*', excludes: '**/*.xml')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -199,7 +199,7 @@ pipeline {
|
|||||||
sh 'docker-compose down --remove-orphans --volumes -t 30 || true'
|
sh 'docker-compose down --remove-orphans --volumes -t 30 || true'
|
||||||
}
|
}
|
||||||
unstable {
|
unstable {
|
||||||
dir(path: 'test/results') {
|
dir(path: 'testing/results') {
|
||||||
archiveArtifacts(allowEmptyArchive: true, artifacts: '**/*', excludes: '**/*.xml')
|
archiveArtifacts(allowEmptyArchive: true, artifacts: '**/*', excludes: '**/*.xml')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -258,7 +258,6 @@ const internalAccessList = {
|
|||||||
})
|
})
|
||||||
.where('access_list.is_deleted', 0)
|
.where('access_list.is_deleted', 0)
|
||||||
.andWhere('access_list.id', data.id)
|
.andWhere('access_list.id', data.id)
|
||||||
.groupBy('access_list.id')
|
|
||||||
.allowGraph('[owner,items,clients,proxy_hosts.[certificate,access_list.[clients,items]]]')
|
.allowGraph('[owner,items,clients,proxy_hosts.[certificate,access_list.[clients,items]]]')
|
||||||
.first();
|
.first();
|
||||||
|
|
||||||
|
@@ -156,8 +156,7 @@ const internalNginx = {
|
|||||||
{ssl_forced: host.ssl_forced}, {caching_enabled: host.caching_enabled}, {block_exploits: host.block_exploits},
|
{ssl_forced: host.ssl_forced}, {caching_enabled: host.caching_enabled}, {block_exploits: host.block_exploits},
|
||||||
{allow_websocket_upgrade: host.allow_websocket_upgrade}, {http2_support: host.http2_support},
|
{allow_websocket_upgrade: host.allow_websocket_upgrade}, {http2_support: host.http2_support},
|
||||||
{hsts_enabled: host.hsts_enabled}, {hsts_subdomains: host.hsts_subdomains}, {access_list: host.access_list},
|
{hsts_enabled: host.hsts_enabled}, {hsts_subdomains: host.hsts_subdomains}, {access_list: host.access_list},
|
||||||
{certificate: host.certificate}, {proxy_protocol_enabled: host.proxy_protocol_enabled},
|
{certificate: host.certificate}, host.locations[i]);
|
||||||
{loadbalancer_address: host.loadbalancer_address}, host.locations[i]);
|
|
||||||
|
|
||||||
if (locationCopy.forward_host.indexOf('/') > -1) {
|
if (locationCopy.forward_host.indexOf('/') > -1) {
|
||||||
const splitted = locationCopy.forward_host.split('/');
|
const splitted = locationCopy.forward_host.split('/');
|
||||||
|
@@ -1,56 +0,0 @@
|
|||||||
const migrate_name = 'proxy_protocol';
|
|
||||||
const logger = require('../logger').migrate;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Migrate
|
|
||||||
*
|
|
||||||
* @see http://knexjs.org/#Schema
|
|
||||||
*
|
|
||||||
* @param {Object} knex
|
|
||||||
* @param {Promise} Promise
|
|
||||||
* @returns {Promise}
|
|
||||||
*/
|
|
||||||
exports.up = function (knex/*, Promise*/) {
|
|
||||||
logger.info('[' + migrate_name + '] Migrating Up...');
|
|
||||||
|
|
||||||
return knex.schema.table('proxy_host', function (proxy_host) {
|
|
||||||
proxy_host.integer('proxy_protocol_enabled').notNull().defaultTo(0);
|
|
||||||
proxy_host.string('loadbalancer_address').notNull().defaultTo('');
|
|
||||||
})
|
|
||||||
.then(() => {
|
|
||||||
logger.info('[' + migrate_name + '] proxy_host Table altered');
|
|
||||||
|
|
||||||
return knex.schema.table('stream', function (stream) {
|
|
||||||
stream.integer('proxy_protocol_enabled').notNull().defaultTo(0);
|
|
||||||
stream.string('loadbalancer_address').notNull().defaultTo('');
|
|
||||||
})
|
|
||||||
.then(() => {
|
|
||||||
logger.info('[' + migrate_name + '] stream Table altered');
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Undo Migrate
|
|
||||||
*
|
|
||||||
* @param {Object} knex
|
|
||||||
* @param {Promise} Promise
|
|
||||||
* @returns {Promise}
|
|
||||||
*/
|
|
||||||
exports.down = function (knex/*, Promise*/) {
|
|
||||||
return knex.schema.table('proxy_host', function (proxy_host) {
|
|
||||||
proxy_host.dropColumn('proxy_protocol_enabled');
|
|
||||||
proxy_host.dropColumn('loadbalancer_address');
|
|
||||||
})
|
|
||||||
.then(function () {
|
|
||||||
logger.info('[' + migrate_name + '] proxy_host Table altered');
|
|
||||||
return knex.schema.table('stream', function (stream) {
|
|
||||||
stream.dropColumn('proxy_protocol_enabled');
|
|
||||||
stream.dropColumn('loadbalancer_address');
|
|
||||||
})
|
|
||||||
.then(function () {
|
|
||||||
logger.info('[' + migrate_name + '] stream Table altered');
|
|
||||||
});
|
|
||||||
});
|
|
||||||
};
|
|
@@ -21,7 +21,6 @@ const boolFields = [
|
|||||||
'enabled',
|
'enabled',
|
||||||
'hsts_enabled',
|
'hsts_enabled',
|
||||||
'hsts_subdomains',
|
'hsts_subdomains',
|
||||||
'proxy_protocol_enabled',
|
|
||||||
];
|
];
|
||||||
|
|
||||||
class ProxyHost extends Model {
|
class ProxyHost extends Model {
|
||||||
|
@@ -13,7 +13,6 @@ const boolFields = [
|
|||||||
'is_deleted',
|
'is_deleted',
|
||||||
'tcp_forwarding',
|
'tcp_forwarding',
|
||||||
'udp_forwarding',
|
'udp_forwarding',
|
||||||
'proxy_protocol_enabled',
|
|
||||||
];
|
];
|
||||||
|
|
||||||
class Stream extends Model {
|
class Stream extends Model {
|
||||||
|
@@ -110,16 +110,6 @@
|
|||||||
"caching_enabled": {
|
"caching_enabled": {
|
||||||
"description": "Should we cache assets",
|
"description": "Should we cache assets",
|
||||||
"type": "boolean"
|
"type": "boolean"
|
||||||
},
|
|
||||||
"proxy_protocol_enabled": {
|
|
||||||
"description": "Should the proxy_procotol be enabled",
|
|
||||||
"type": "boolean"
|
|
||||||
},
|
|
||||||
"loadbalancer_address": {
|
|
||||||
"description": "Hostname, IP or CIDR range of the load balancer",
|
|
||||||
"type": "string",
|
|
||||||
"minLength": 0,
|
|
||||||
"maxLength": 255
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -23,9 +23,7 @@
|
|||||||
"locations",
|
"locations",
|
||||||
"hsts_enabled",
|
"hsts_enabled",
|
||||||
"hsts_subdomains",
|
"hsts_subdomains",
|
||||||
"certificate",
|
"certificate"
|
||||||
"proxy_protocol_enabled",
|
|
||||||
"loadbalancer_address"
|
|
||||||
],
|
],
|
||||||
"additionalProperties": false,
|
"additionalProperties": false,
|
||||||
"properties": {
|
"properties": {
|
||||||
@@ -139,12 +137,6 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"proxy_protocol_enabled": {
|
|
||||||
"$ref": "../common.json#/properties/proxy_protocol_enabled"
|
|
||||||
},
|
|
||||||
"loadbalancer_address": {
|
|
||||||
"$ref": "../common.json#/properties/loadbalancer_address"
|
|
||||||
},
|
|
||||||
"owner": {
|
"owner": {
|
||||||
"$ref": "./user-object.json"
|
"$ref": "./user-object.json"
|
||||||
},
|
},
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"description": "Stream object",
|
"description": "Stream object",
|
||||||
"required": ["id", "created_on", "modified_on", "owner_user_id", "incoming_port", "forwarding_host", "forwarding_port", "tcp_forwarding", "udp_forwarding", "enabled", "meta", "proxy_protocol_enabled", "loadbalancer_address"],
|
"required": ["id", "created_on", "modified_on", "owner_user_id", "incoming_port", "forwarding_host", "forwarding_port", "tcp_forwarding", "udp_forwarding", "enabled", "meta"],
|
||||||
"additionalProperties": false,
|
"additionalProperties": false,
|
||||||
"properties": {
|
"properties": {
|
||||||
"id": {
|
"id": {
|
||||||
@@ -57,12 +57,6 @@
|
|||||||
},
|
},
|
||||||
"meta": {
|
"meta": {
|
||||||
"type": "object"
|
"type": "object"
|
||||||
},
|
|
||||||
"proxy_protocol_enabled": {
|
|
||||||
"$ref": "../common.json#/properties/proxy_protocol_enabled"
|
|
||||||
},
|
|
||||||
"loadbalancer_address": {
|
|
||||||
"$ref": "../common.json#/properties/loadbalancer_address"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -50,9 +50,7 @@
|
|||||||
"enabled": true,
|
"enabled": true,
|
||||||
"locations": null,
|
"locations": null,
|
||||||
"hsts_enabled": false,
|
"hsts_enabled": false,
|
||||||
"hsts_subdomains": false,
|
"hsts_subdomains": false
|
||||||
"proxy_protocol_enabled": false,
|
|
||||||
"loadbalancer_address": ""
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@@ -50,9 +50,7 @@
|
|||||||
"enabled": true,
|
"enabled": true,
|
||||||
"locations": null,
|
"locations": null,
|
||||||
"hsts_enabled": false,
|
"hsts_enabled": false,
|
||||||
"hsts_subdomains": false,
|
"hsts_subdomains": false
|
||||||
"proxy_protocol_enabled": false,
|
|
||||||
"loadbalancer_address": ""
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@@ -79,12 +79,6 @@
|
|||||||
},
|
},
|
||||||
"locations": {
|
"locations": {
|
||||||
"$ref": "../../../../components/proxy-host-object.json#/properties/locations"
|
"$ref": "../../../../components/proxy-host-object.json#/properties/locations"
|
||||||
},
|
|
||||||
"proxy_protocol_enabled": {
|
|
||||||
"$ref": "../../../../components/proxy-host-object.json#/properties/proxy_protocol_enabled"
|
|
||||||
},
|
|
||||||
"loadbalancer_address": {
|
|
||||||
"$ref": "../../../../components/proxy-host-object.json#/properties/loadbalancer_address"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -122,8 +116,6 @@
|
|||||||
"enabled": true,
|
"enabled": true,
|
||||||
"hsts_enabled": false,
|
"hsts_enabled": false,
|
||||||
"hsts_subdomains": false,
|
"hsts_subdomains": false,
|
||||||
"proxy_protocol_enabled": false,
|
|
||||||
"loadbalancer_address": "",
|
|
||||||
"owner": {
|
"owner": {
|
||||||
"id": 1,
|
"id": 1,
|
||||||
"created_on": "2024-10-07T22:43:55.000Z",
|
"created_on": "2024-10-07T22:43:55.000Z",
|
||||||
|
@@ -67,12 +67,6 @@
|
|||||||
},
|
},
|
||||||
"locations": {
|
"locations": {
|
||||||
"$ref": "../../../components/proxy-host-object.json#/properties/locations"
|
"$ref": "../../../components/proxy-host-object.json#/properties/locations"
|
||||||
},
|
|
||||||
"proxy_protocol_enabled": {
|
|
||||||
"$ref": "../../../components/proxy-host-object.json#/properties/proxy_protocol_enabled"
|
|
||||||
},
|
|
||||||
"loadbalancer_address": {
|
|
||||||
"$ref": "../../../components/proxy-host-object.json#/properties/loadbalancer_address"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -107,8 +101,6 @@
|
|||||||
"enabled": true,
|
"enabled": true,
|
||||||
"hsts_enabled": false,
|
"hsts_enabled": false,
|
||||||
"hsts_subdomains": false,
|
"hsts_subdomains": false,
|
||||||
"proxy_protocol_enabled": false,
|
|
||||||
"loadbalancer_address": "",
|
|
||||||
"certificate": null,
|
"certificate": null,
|
||||||
"owner": {
|
"owner": {
|
||||||
"id": 1,
|
"id": 1,
|
||||||
|
@@ -36,8 +36,6 @@
|
|||||||
"forwarding_port": 80,
|
"forwarding_port": 80,
|
||||||
"tcp_forwarding": true,
|
"tcp_forwarding": true,
|
||||||
"udp_forwarding": false,
|
"udp_forwarding": false,
|
||||||
"proxy_protocol_enabled": false,
|
|
||||||
"loadbalancer_address": "",
|
|
||||||
"meta": {
|
"meta": {
|
||||||
"nginx_online": true,
|
"nginx_online": true,
|
||||||
"nginx_err": null
|
"nginx_err": null
|
||||||
|
@@ -32,12 +32,6 @@
|
|||||||
"udp_forwarding": {
|
"udp_forwarding": {
|
||||||
"$ref": "../../../components/stream-object.json#/properties/udp_forwarding"
|
"$ref": "../../../components/stream-object.json#/properties/udp_forwarding"
|
||||||
},
|
},
|
||||||
"proxy_protocol_enabled": {
|
|
||||||
"$ref": "../../../components/stream-object.json#/properties/proxy_protocol_enabled"
|
|
||||||
},
|
|
||||||
"loadbalancer_address": {
|
|
||||||
"$ref": "../../../components/stream-object.json#/properties/loadbalancer_address"
|
|
||||||
},
|
|
||||||
"meta": {
|
"meta": {
|
||||||
"$ref": "../../../components/stream-object.json#/properties/meta"
|
"$ref": "../../../components/stream-object.json#/properties/meta"
|
||||||
}
|
}
|
||||||
@@ -63,8 +57,6 @@
|
|||||||
"forwarding_port": 80,
|
"forwarding_port": 80,
|
||||||
"tcp_forwarding": true,
|
"tcp_forwarding": true,
|
||||||
"udp_forwarding": false,
|
"udp_forwarding": false,
|
||||||
"proxy_protocol_enabled": false,
|
|
||||||
"loadbalancer_address": "",
|
|
||||||
"meta": {
|
"meta": {
|
||||||
"nginx_online": true,
|
"nginx_online": true,
|
||||||
"nginx_err": null
|
"nginx_err": null
|
||||||
|
@@ -36,8 +36,6 @@
|
|||||||
"forwarding_port": 80,
|
"forwarding_port": 80,
|
||||||
"tcp_forwarding": true,
|
"tcp_forwarding": true,
|
||||||
"udp_forwarding": false,
|
"udp_forwarding": false,
|
||||||
"proxy_protocol_enabled": false,
|
|
||||||
"loadbalancer_address": "",
|
|
||||||
"meta": {
|
"meta": {
|
||||||
"nginx_online": true,
|
"nginx_online": true,
|
||||||
"nginx_err": null
|
"nginx_err": null
|
||||||
|
@@ -79,12 +79,6 @@
|
|||||||
},
|
},
|
||||||
"locations": {
|
"locations": {
|
||||||
"$ref": "../../../../components/proxy-host-object.json#/properties/locations"
|
"$ref": "../../../../components/proxy-host-object.json#/properties/locations"
|
||||||
},
|
|
||||||
"proxy_protocol_enabled": {
|
|
||||||
"$ref": "../../../../components/proxy-host-object.json#/properties/proxy_protocol_enabled"
|
|
||||||
},
|
|
||||||
"loadbalancer_address": {
|
|
||||||
"$ref": "../../../../components/proxy-host-object.json#/properties/loadbalancer_address"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -122,8 +116,6 @@
|
|||||||
"enabled": true,
|
"enabled": true,
|
||||||
"hsts_enabled": false,
|
"hsts_enabled": false,
|
||||||
"hsts_subdomains": false,
|
"hsts_subdomains": false,
|
||||||
"proxy_protocol_enabled": false,
|
|
||||||
"loadbalancer_address": "",
|
|
||||||
"owner": {
|
"owner": {
|
||||||
"id": 1,
|
"id": 1,
|
||||||
"created_on": "2024-10-07T22:43:55.000Z",
|
"created_on": "2024-10-07T22:43:55.000Z",
|
||||||
|
@@ -1,34 +1,20 @@
|
|||||||
|
listen 80;
|
||||||
{% if proxy_protocol_enabled == 1 or proxy_protocol_enabled == true -%}
|
|
||||||
{% assign port_number_http = "88" -%}
|
|
||||||
{% assign port_number_https = "444" -%}
|
|
||||||
{% assign listen_extra_args = "proxy_protocol" -%}
|
|
||||||
{% else -%}
|
|
||||||
{% assign port_number_http = "80" -%}
|
|
||||||
{% assign port_number_https = "443" -%}
|
|
||||||
{% assign listen_extra_args = "" -%}
|
|
||||||
{% endif -%}
|
|
||||||
|
|
||||||
listen {{ port_number_http }} {{ listen_extra_args }};
|
|
||||||
{% if ipv6 -%}
|
{% if ipv6 -%}
|
||||||
listen [::]:{{ port_number_http }} {{ listen_extra_args }};
|
listen [::]:80;
|
||||||
{% else -%}
|
{% else -%}
|
||||||
#listen [::]:{{ port_number_http }} {{ listen_extra_args }};
|
#listen [::]:80;
|
||||||
{% endif -%}
|
{% endif %}
|
||||||
|
|
||||||
{% if certificate -%}
|
{% if certificate -%}
|
||||||
{% capture listen_extra_args_https %}ssl {{ listen_extra_args }}{% endcapture -%}
|
listen 443 ssl;
|
||||||
listen {{ port_number_https }} {{ listen_extra_args_https }};
|
|
||||||
{% if ipv6 -%}
|
{% if ipv6 -%}
|
||||||
listen [::]:{{ port_number_https }} {{ listen_extra_args_https }};
|
listen [::]:443 ssl;
|
||||||
{% else -%}
|
{% else -%}
|
||||||
#listen [::]:{{ port_number_https }} {{ listen_extra_args_https }};
|
#listen [::]:443;
|
||||||
{% endif -%}
|
{% endif %}
|
||||||
{% endif -%}
|
{% endif %}
|
||||||
|
|
||||||
server_name {{ domain_names | join: " " }};
|
server_name {{ domain_names | join: " " }};
|
||||||
{% if http2_support == 1 or http2_support == true %}
|
{% if http2_support == 1 or http2_support == true %}
|
||||||
http2 on;
|
http2 on;
|
||||||
{% else -%}
|
{% else -%}
|
||||||
http2 off;
|
http2 off;
|
||||||
{% endif %}
|
{% endif %}
|
@@ -1,6 +0,0 @@
|
|||||||
{% if proxy_protocol_enabled == 1 or proxy_protocol_enabled == true %}
|
|
||||||
{% if loadbalancer_address != '' %}
|
|
||||||
set_real_ip_from {{ loadbalancer_address }};
|
|
||||||
real_ip_header proxy_protocol;
|
|
||||||
{% endif %}
|
|
||||||
{% endif %}
|
|
@@ -15,7 +15,6 @@ server {
|
|||||||
{% include "_exploits.conf" %}
|
{% include "_exploits.conf" %}
|
||||||
{% include "_hsts.conf" %}
|
{% include "_hsts.conf" %}
|
||||||
{% include "_forced_ssl.conf" %}
|
{% include "_forced_ssl.conf" %}
|
||||||
{% include "_proxy_protocol.conf" %}
|
|
||||||
|
|
||||||
{% if allow_websocket_upgrade == 1 or allow_websocket_upgrade == true %}
|
{% if allow_websocket_upgrade == 1 or allow_websocket_upgrade == true %}
|
||||||
proxy_set_header Upgrade $http_upgrade;
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
|
@@ -1,38 +1,31 @@
|
|||||||
# ------------------------------------------------------------
|
# ------------------------------------------------------------
|
||||||
# {{ incoming_port }} TCP: {{ tcp_forwarding }} UDP: {{ udp_forwarding }}
|
# {{ incoming_port }} TCP: {{ tcp_forwarding }} UDP: {{ udp_forwarding }}
|
||||||
# ------------------------------------------------------------
|
# ------------------------------------------------------------
|
||||||
{% if proxy_protocol_enabled == 1 or proxy_protocol_enabled == true -%}
|
|
||||||
{% capture listen_extra_args %}proxy_protocol{% endcapture -%}
|
|
||||||
{% endif -%}
|
|
||||||
|
|
||||||
{% if enabled %}
|
{% if enabled %}
|
||||||
{% if tcp_forwarding == 1 or tcp_forwarding == true -%}
|
{% if tcp_forwarding == 1 or tcp_forwarding == true -%}
|
||||||
server {
|
server {
|
||||||
listen {{ incoming_port }} {{ listen_extra_args }};
|
listen {{ incoming_port }};
|
||||||
{% if ipv6 -%}
|
{% if ipv6 -%}
|
||||||
listen [::]:{{ incoming_port }} {{ listen_extra_args }};
|
listen [::]:{{ incoming_port }};
|
||||||
{% else -%}
|
{% else -%}
|
||||||
#listen [::]:{{ incoming_port }}{{ listen_extra_args }};
|
#listen [::]:{{ incoming_port }};
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
proxy_pass {{ forwarding_host }}:{{ forwarding_port }};
|
proxy_pass {{ forwarding_host }}:{{ forwarding_port }};
|
||||||
|
|
||||||
{% include '_proxy_protocol.conf' %}
|
|
||||||
|
|
||||||
# Custom
|
# Custom
|
||||||
include /data/nginx/custom/server_stream[.]conf;
|
include /data/nginx/custom/server_stream[.]conf;
|
||||||
include /data/nginx/custom/server_stream_tcp[.]conf;
|
include /data/nginx/custom/server_stream_tcp[.]conf;
|
||||||
}
|
}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if udp_forwarding == 1 or udp_forwarding == true %}
|
{% if udp_forwarding == 1 or udp_forwarding == true %}
|
||||||
{% # Proxy Protocol is not supported for UDP %}
|
|
||||||
{% assign listen_extra_args = "" %}
|
|
||||||
server {
|
server {
|
||||||
listen {{ incoming_port }} udp {{ listen_extra_args }};
|
listen {{ incoming_port }} udp;
|
||||||
{% if ipv6 -%}
|
{% if ipv6 -%}
|
||||||
listen [::]:{{ incoming_port }} udp {{ listen_extra_args }};
|
listen [::]:{{ incoming_port }} udp;
|
||||||
{% else -%}
|
{% else -%}
|
||||||
#listen [::]:{{ incoming_port }} udp {{ listen_extra_args }};
|
#listen [::]:{{ incoming_port }} udp;
|
||||||
{% endif %}
|
{% endif %}
|
||||||
proxy_pass {{ forwarding_host }}:{{ forwarding_port }};
|
proxy_pass {{ forwarding_host }}:{{ forwarding_port }};
|
||||||
|
|
||||||
|
@@ -35,8 +35,7 @@ RUN echo "fs.file-max = 65535" > /etc/sysctl.conf \
|
|||||||
COPY docker/scripts/install-s6 /tmp/install-s6
|
COPY docker/scripts/install-s6 /tmp/install-s6
|
||||||
RUN /tmp/install-s6 "${TARGETPLATFORM}" && rm -f /tmp/install-s6
|
RUN /tmp/install-s6 "${TARGETPLATFORM}" && rm -f /tmp/install-s6
|
||||||
|
|
||||||
# http admin_ui http_proxy_protocol https https_proxy_protocol
|
EXPOSE 80 81 443
|
||||||
EXPOSE 80 81 88 443 444
|
|
||||||
|
|
||||||
COPY backend /app
|
COPY backend /app
|
||||||
COPY frontend/dist /app/frontend
|
COPY frontend/dist /app/frontend
|
||||||
|
@@ -36,6 +36,5 @@ RUN rm -f /etc/nginx/conf.d/production.conf \
|
|||||||
COPY --from=pebbleca /test/certs/pebble.minica.pem /etc/ssl/certs/pebble.minica.pem
|
COPY --from=pebbleca /test/certs/pebble.minica.pem /etc/ssl/certs/pebble.minica.pem
|
||||||
COPY --from=testca /home/step/certs/root_ca.crt /etc/ssl/certs/NginxProxyManager.crt
|
COPY --from=testca /home/step/certs/root_ca.crt /etc/ssl/certs/NginxProxyManager.crt
|
||||||
|
|
||||||
# http admin_ui http_proxy_protocol https https_proxy_protocol
|
EXPOSE 80 81 443
|
||||||
EXPOSE 80 81 88 443 444
|
|
||||||
ENTRYPOINT [ "/init" ]
|
ENTRYPOINT [ "/init" ]
|
||||||
|
@@ -40,7 +40,7 @@ services:
|
|||||||
- ca.internal
|
- ca.internal
|
||||||
|
|
||||||
pdns:
|
pdns:
|
||||||
image: pschiffe/pdns-mysql:4.8
|
image: pschiffe/pdns-mysql
|
||||||
volumes:
|
volumes:
|
||||||
- '/etc/localtime:/etc/localtime:ro'
|
- '/etc/localtime:/etc/localtime:ro'
|
||||||
environment:
|
environment:
|
||||||
|
@@ -10,9 +10,7 @@ services:
|
|||||||
ports:
|
ports:
|
||||||
- 3080:80
|
- 3080:80
|
||||||
- 3081:81
|
- 3081:81
|
||||||
- 3088:88
|
|
||||||
- 3443:443
|
- 3443:443
|
||||||
- 3444:444
|
|
||||||
networks:
|
networks:
|
||||||
nginx_proxy_manager:
|
nginx_proxy_manager:
|
||||||
aliases:
|
aliases:
|
||||||
@@ -134,7 +132,7 @@ services:
|
|||||||
- 8128:3128
|
- 8128:3128
|
||||||
|
|
||||||
pdns:
|
pdns:
|
||||||
image: pschiffe/pdns-mysql:4.8
|
image: pschiffe/pdns-mysql
|
||||||
container_name: npm2dev.pdns
|
container_name: npm2dev.pdns
|
||||||
volumes:
|
volumes:
|
||||||
- '/etc/localtime:/etc/localtime:ro'
|
- '/etc/localtime:/etc/localtime:ro'
|
||||||
@@ -220,7 +218,7 @@ services:
|
|||||||
env_file:
|
env_file:
|
||||||
- ci.env
|
- ci.env
|
||||||
ports:
|
ports:
|
||||||
- 9000:9000
|
- 9000:9000
|
||||||
depends_on:
|
depends_on:
|
||||||
- authentik-redis
|
- authentik-redis
|
||||||
- db-postgres
|
- db-postgres
|
||||||
|
@@ -220,27 +220,3 @@ To enable the geoip2 module, you can create the custom configuration file `/data
|
|||||||
load_module /usr/lib/nginx/modules/ngx_http_geoip2_module.so;
|
load_module /usr/lib/nginx/modules/ngx_http_geoip2_module.so;
|
||||||
load_module /usr/lib/nginx/modules/ngx_stream_geoip2_module.so;
|
load_module /usr/lib/nginx/modules/ngx_stream_geoip2_module.so;
|
||||||
```
|
```
|
||||||
|
|
||||||
## Enabling PROXY protocol for Proxy Hosts
|
|
||||||
|
|
||||||
When running NPM behind a load balancer, you might want to use the [PROXY procotol](https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt) to receive client information such as the source IP address (useful for banning IPs).
|
|
||||||
|
|
||||||
When configuring the PROXY protocol for proxy hosts, NPM uses the ports 88 for http and 444 for https traffic to allow you to decide on a per host basis whether to use the PROSY protocol.
|
|
||||||
|
|
||||||
To enable the PROXY protocol for your hosts you need to perform the following steps:
|
|
||||||
|
|
||||||
1. Expose the ports `88` (and `444` is applicable) by adjusting your `docker-compose.yml`
|
|
||||||
2. Edit your proxy hosts to enable the PROXY protocol
|
|
||||||
3. Edit your upstream load balancer to redirect traffic to the port `88`/`444` and enable the PROXY protocol
|
|
||||||
|
|
||||||
## Enabling PROXY protocol for Streams
|
|
||||||
|
|
||||||
When running NPM behind a load balancer, you might want to use the [PROXY procotol](https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt) to receive client information such as the source IP address (useful for banning IPs).
|
|
||||||
|
|
||||||
Keep in mind that the PROXY procotol cannot be enabled for udp endpoints.
|
|
||||||
|
|
||||||
To enable the PROXY protocol for streams:
|
|
||||||
|
|
||||||
1. Expose the desired port by adjusting you `docker-compose.yml`
|
|
||||||
2. Edit the Stream to enable the PROXY protocol
|
|
||||||
3. Edit your upstream load balancer to enable the PROXY protocol
|
|
||||||
|
@@ -18,8 +18,6 @@ services:
|
|||||||
- '80:80' # Public HTTP Port
|
- '80:80' # Public HTTP Port
|
||||||
- '443:443' # Public HTTPS Port
|
- '443:443' # Public HTTPS Port
|
||||||
- '81:81' # Admin Web Port
|
- '81:81' # Admin Web Port
|
||||||
# - '88:88' # Public HTTP Port with proxy_protocol enabled
|
|
||||||
# - '444:444' # Public HTTPS Port with proxy_protocol enabled
|
|
||||||
# Add any other Stream port you want to expose
|
# Add any other Stream port you want to expose
|
||||||
# - '21:21' # FTP
|
# - '21:21' # FTP
|
||||||
|
|
||||||
|
@@ -1065,9 +1065,9 @@ vfile@^6.0.0:
|
|||||||
vfile-message "^4.0.0"
|
vfile-message "^4.0.0"
|
||||||
|
|
||||||
vite@^5.4.8:
|
vite@^5.4.8:
|
||||||
version "5.4.14"
|
version "5.4.8"
|
||||||
resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.14.tgz#ff8255edb02134df180dcfca1916c37a6abe8408"
|
resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.8.tgz#af548ce1c211b2785478d3ba3e8da51e39a287e8"
|
||||||
integrity sha512-EK5cY7Q1D8JNhSaPKVK4pwBFvaTmZxEnoKXLG/U9gmdDcihQGNzFlgIvaxezFR4glP1LsuiedwMBqCXH3wZccA==
|
integrity sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
esbuild "^0.21.3"
|
esbuild "^0.21.3"
|
||||||
postcss "^8.4.43"
|
postcss "^8.4.43"
|
||||||
|
@@ -72,7 +72,7 @@
|
|||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-6 col-md-6">
|
<div class="col-sm-12 col-md-12">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="custom-switch">
|
<label class="custom-switch">
|
||||||
<input type="checkbox" class="custom-switch-input" name="allow_websocket_upgrade" value="1"<%- allow_websocket_upgrade ? ' checked' : '' %>>
|
<input type="checkbox" class="custom-switch-input" name="allow_websocket_upgrade" value="1"<%- allow_websocket_upgrade ? ' checked' : '' %>>
|
||||||
@@ -81,24 +81,6 @@
|
|||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-6 col-md-6">
|
|
||||||
<div class="form-group">
|
|
||||||
<label class="custom-switch">
|
|
||||||
<input type="checkbox" class="custom-switch-input" name="proxy_protocol_enabled" value="1"<%- proxy_protocol_enabled ? ' checked' : '' %>>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="custom-switch-indicator"></span>
|
|
||||||
<span class="custom-switch-description"><%- i18n('proxy-hosts', 'enable-proxy-protocol') %><a href="https://docs.nginx.com/nginx/admin-guide/load-balancer/using-proxy-protocol/#introduction" target="_blank"><i class="fe fe-help-circle"></i></a></span>
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-sm-12 col-md-12">
|
|
||||||
<div class="form-group">
|
|
||||||
<label class="form-label"><%- i18n('proxy-hosts', 'load-balancer-ip') %> <a href="https://docs.nginx.com/nginx/admin-guide/load-balancer/using-proxy-protocol/#changing-the-load-balancers-ip-address-to-the-client-ip-address" target="_blank"><i class="fe fe-help-circle"></i></a></label>
|
|
||||||
<input type="text" name="loadbalancer_address" class="form-control text-monospace" placeholder="" value="<%- loadbalancer_address %>" autocomplete="off" maxlength="255" <%- proxy_protocol_enabled ? '' : ' disabled' %>>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-sm-12 col-md-12">
|
<div class="col-sm-12 col-md-12">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
|
@@ -43,9 +43,7 @@ module.exports = Mn.View.extend({
|
|||||||
dns_provider_credentials: 'textarea[name="meta[dns_provider_credentials]"]',
|
dns_provider_credentials: 'textarea[name="meta[dns_provider_credentials]"]',
|
||||||
propagation_seconds: 'input[name="meta[propagation_seconds]"]',
|
propagation_seconds: 'input[name="meta[propagation_seconds]"]',
|
||||||
forward_scheme: 'select[name="forward_scheme"]',
|
forward_scheme: 'select[name="forward_scheme"]',
|
||||||
letsencrypt: '.letsencrypt',
|
letsencrypt: '.letsencrypt'
|
||||||
proxy_protocol_enabled: 'input[name="proxy_protocol_enabled"]',
|
|
||||||
loadbalancer_address: 'input[name="loadbalancer_address"]',
|
|
||||||
},
|
},
|
||||||
|
|
||||||
regions: {
|
regions: {
|
||||||
@@ -103,14 +101,6 @@ module.exports = Mn.View.extend({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
'change @ui.proxy_protocol_enabled': function () {
|
|
||||||
let checked = this.ui.proxy_protocol_enabled.prop('checked');
|
|
||||||
this.ui.loadbalancer_address
|
|
||||||
.prop('disabled', !checked)
|
|
||||||
.parents('.form-group')
|
|
||||||
.css('opacity', checked ? 1 : 0.5);
|
|
||||||
},
|
|
||||||
|
|
||||||
'change @ui.dns_challenge_switch': function () {
|
'change @ui.dns_challenge_switch': function () {
|
||||||
const checked = this.ui.dns_challenge_switch.prop('checked');
|
const checked = this.ui.dns_challenge_switch.prop('checked');
|
||||||
if (checked) {
|
if (checked) {
|
||||||
@@ -177,7 +167,6 @@ module.exports = Mn.View.extend({
|
|||||||
data.hsts_enabled = !!data.hsts_enabled;
|
data.hsts_enabled = !!data.hsts_enabled;
|
||||||
data.hsts_subdomains = !!data.hsts_subdomains;
|
data.hsts_subdomains = !!data.hsts_subdomains;
|
||||||
data.ssl_forced = !!data.ssl_forced;
|
data.ssl_forced = !!data.ssl_forced;
|
||||||
data.proxy_protocol_enabled = !!data.proxy_protocol_enabled;
|
|
||||||
|
|
||||||
if (typeof data.meta === 'undefined') data.meta = {};
|
if (typeof data.meta === 'undefined') data.meta = {};
|
||||||
data.meta.letsencrypt_agree = data.meta.letsencrypt_agree == 1;
|
data.meta.letsencrypt_agree = data.meta.letsencrypt_agree == 1;
|
||||||
@@ -277,7 +266,6 @@ module.exports = Mn.View.extend({
|
|||||||
|
|
||||||
this.ui.ssl_forced.trigger('change');
|
this.ui.ssl_forced.trigger('change');
|
||||||
this.ui.hsts_enabled.trigger('change');
|
this.ui.hsts_enabled.trigger('change');
|
||||||
this.ui.proxy_protocol_enabled.trigger('change');
|
|
||||||
|
|
||||||
// Domain names
|
// Domain names
|
||||||
this.ui.domain_names.selectize({
|
this.ui.domain_names.selectize({
|
||||||
|
@@ -42,24 +42,6 @@
|
|||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-6 col-md-6">
|
|
||||||
<div class="form-group">
|
|
||||||
<label class="custom-switch">
|
|
||||||
<input type="checkbox" class="custom-switch-input" name="proxy_protocol_enabled" value="1"<%- proxy_protocol_enabled ? ' checked' : '' %>>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="custom-switch-indicator"></span>
|
|
||||||
<span class="custom-switch-description"><%- i18n('streams', 'enable-proxy-protocol') %><a href="https://docs.nginx.com/nginx/admin-guide/load-balancer/using-proxy-protocol/#introduction" target="_blank"><i class="fe fe-help-circle"></i></a></span>
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-sm-12 col-md-12">
|
|
||||||
<div class="form-group">
|
|
||||||
<label class="form-label"><%- i18n('streams', 'load-balancer-ip') %><a href="https://docs.nginx.com/nginx/admin-guide/load-balancer/using-proxy-protocol/#changing-the-load-balancers-ip-address-to-the-client-ip-address" target="_blank"><i class="fe fe-help-circle"></i></a></label>
|
|
||||||
<input type="text" name="loadbalancer_address" class="form-control text-monospace" placeholder="" value="<%- loadbalancer_address %>" autocomplete="off" maxlength="255" <%- proxy_protocol_enabled ? '' : ' disabled' %>>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-sm-12 col-md-12">
|
<div class="col-sm-12 col-md-12">
|
||||||
<div class="forward-type-error invalid-feedback"><%- i18n('streams', 'forward-type-error') %></div>
|
<div class="forward-type-error invalid-feedback"><%- i18n('streams', 'forward-type-error') %></div>
|
||||||
</div>
|
</div>
|
||||||
|
@@ -14,8 +14,6 @@ module.exports = Mn.View.extend({
|
|||||||
ui: {
|
ui: {
|
||||||
form: 'form',
|
form: 'form',
|
||||||
forwarding_host: 'input[name="forwarding_host"]',
|
forwarding_host: 'input[name="forwarding_host"]',
|
||||||
proxy_protocol_enabled: 'input[name="proxy_protocol_enabled"]',
|
|
||||||
loadbalancer_address: 'input[name="loadbalancer_address"]',
|
|
||||||
type_error: '.forward-type-error',
|
type_error: '.forward-type-error',
|
||||||
buttons: '.modal-footer button',
|
buttons: '.modal-footer button',
|
||||||
switches: '.custom-switch-input',
|
switches: '.custom-switch-input',
|
||||||
@@ -27,13 +25,6 @@ module.exports = Mn.View.extend({
|
|||||||
'change @ui.switches': function () {
|
'change @ui.switches': function () {
|
||||||
this.ui.type_error.hide();
|
this.ui.type_error.hide();
|
||||||
},
|
},
|
||||||
'change @ui.proxy_protocol_enabled': function () {
|
|
||||||
let checked = this.ui.proxy_protocol_enabled.prop('checked');
|
|
||||||
this.ui.loadbalancer_address
|
|
||||||
.prop('disabled', !checked)
|
|
||||||
.parents('.form-group')
|
|
||||||
.css('opacity', checked ? 1 : 0.5);
|
|
||||||
},
|
|
||||||
|
|
||||||
'click @ui.save': function (e) {
|
'click @ui.save': function (e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
@@ -56,7 +47,6 @@ module.exports = Mn.View.extend({
|
|||||||
data.forwarding_port = parseInt(data.forwarding_port, 10);
|
data.forwarding_port = parseInt(data.forwarding_port, 10);
|
||||||
data.tcp_forwarding = !!data.tcp_forwarding;
|
data.tcp_forwarding = !!data.tcp_forwarding;
|
||||||
data.udp_forwarding = !!data.udp_forwarding;
|
data.udp_forwarding = !!data.udp_forwarding;
|
||||||
data.proxy_protocol_enabled = !!data.proxy_protocol_enabled;
|
|
||||||
|
|
||||||
let method = App.Api.Nginx.Streams.create;
|
let method = App.Api.Nginx.Streams.create;
|
||||||
let is_new = true;
|
let is_new = true;
|
||||||
@@ -86,10 +76,6 @@ module.exports = Mn.View.extend({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
onRender: function () {
|
|
||||||
this.ui.proxy_protocol_enabled.trigger('change');
|
|
||||||
},
|
|
||||||
|
|
||||||
initialize: function (options) {
|
initialize: function (options) {
|
||||||
if (typeof options.model === 'undefined' || !options.model) {
|
if (typeof options.model === 'undefined' || !options.model) {
|
||||||
this.model = new StreamModel.Model();
|
this.model = new StreamModel.Model();
|
||||||
|
@@ -133,9 +133,7 @@
|
|||||||
"allow-websocket-upgrade": "Websockets Support",
|
"allow-websocket-upgrade": "Websockets Support",
|
||||||
"ignore-invalid-upstream-ssl": "Ignore Invalid SSL",
|
"ignore-invalid-upstream-ssl": "Ignore Invalid SSL",
|
||||||
"custom-forward-host-help": "Add a path for sub-folder forwarding.\nExample: 203.0.113.25/path/",
|
"custom-forward-host-help": "Add a path for sub-folder forwarding.\nExample: 203.0.113.25/path/",
|
||||||
"search": "Search Host…",
|
"search": "Search Host…"
|
||||||
"enable-proxy-protocol": "Enable Proxy Protocol",
|
|
||||||
"load-balancer-ip": "Load balancer or TCP proxy IP / CIDR range"
|
|
||||||
},
|
},
|
||||||
"redirection-hosts": {
|
"redirection-hosts": {
|
||||||
"title": "Redirection Hosts",
|
"title": "Redirection Hosts",
|
||||||
@@ -181,9 +179,7 @@
|
|||||||
"delete-confirm": "Are you sure you want to delete this Stream?",
|
"delete-confirm": "Are you sure you want to delete this Stream?",
|
||||||
"help-title": "What is a Stream?",
|
"help-title": "What is a Stream?",
|
||||||
"help-content": "A relatively new feature for Nginx, a Stream will serve to forward TCP/UDP traffic directly to another computer on the network.\nIf you're running game servers, FTP or SSH servers this can come in handy.",
|
"help-content": "A relatively new feature for Nginx, a Stream will serve to forward TCP/UDP traffic directly to another computer on the network.\nIf you're running game servers, FTP or SSH servers this can come in handy.",
|
||||||
"search": "Search Incoming Port…",
|
"search": "Search Incoming Port…"
|
||||||
"enable-proxy-protocol": "Enable Proxy Protocol",
|
|
||||||
"load-balancer-ip": "Load balancer or TCP proxy IP / CIDR range"
|
|
||||||
},
|
},
|
||||||
"certificates": {
|
"certificates": {
|
||||||
"title": "SSL Certificates",
|
"title": "SSL Certificates",
|
||||||
|
@@ -21,8 +21,6 @@ const model = Backbone.Model.extend({
|
|||||||
allow_websocket_upgrade: false,
|
allow_websocket_upgrade: false,
|
||||||
block_exploits: false,
|
block_exploits: false,
|
||||||
http2_support: false,
|
http2_support: false,
|
||||||
proxy_protocol_enabled: false,
|
|
||||||
loadbalancer_address: '',
|
|
||||||
advanced_config: '',
|
advanced_config: '',
|
||||||
enabled: true,
|
enabled: true,
|
||||||
meta: {},
|
meta: {},
|
||||||
|
@@ -13,8 +13,6 @@ const model = Backbone.Model.extend({
|
|||||||
forwarding_port: null,
|
forwarding_port: null,
|
||||||
tcp_forwarding: true,
|
tcp_forwarding: true,
|
||||||
udp_forwarding: false,
|
udp_forwarding: false,
|
||||||
proxy_protocol_enabled: false,
|
|
||||||
loadbalancer_address: "",
|
|
||||||
enabled: true,
|
enabled: true,
|
||||||
meta: {},
|
meta: {},
|
||||||
// The following are expansions:
|
// The following are expansions:
|
||||||
|
@@ -215,14 +215,6 @@
|
|||||||
"credentials": "# Gandi personal access token\ndns_gandi_token=PERSONAL_ACCESS_TOKEN",
|
"credentials": "# Gandi personal access token\ndns_gandi_token=PERSONAL_ACCESS_TOKEN",
|
||||||
"full_plugin_name": "dns-gandi"
|
"full_plugin_name": "dns-gandi"
|
||||||
},
|
},
|
||||||
"gcore": {
|
|
||||||
"name": "Gcore DNS",
|
|
||||||
"package_name": "certbot-dns-gcore",
|
|
||||||
"version": "~=0.1.8",
|
|
||||||
"dependencies": "",
|
|
||||||
"credentials": "dns_gcore_apitoken = 0123456789abcdef0123456789abcdef01234567",
|
|
||||||
"full_plugin_name": "dns-gcore"
|
|
||||||
},
|
|
||||||
"godaddy": {
|
"godaddy": {
|
||||||
"name": "GoDaddy",
|
"name": "GoDaddy",
|
||||||
"package_name": "certbot-dns-godaddy",
|
"package_name": "certbot-dns-godaddy",
|
||||||
|
@@ -32,9 +32,7 @@ describe('Proxy Hosts endpoints', () => {
|
|||||||
http2_support: false,
|
http2_support: false,
|
||||||
hsts_enabled: false,
|
hsts_enabled: false,
|
||||||
hsts_subdomains: false,
|
hsts_subdomains: false,
|
||||||
ssl_forced: false,
|
ssl_forced: false
|
||||||
proxy_protocol_enabled: false,
|
|
||||||
loadbalancer_address: '',
|
|
||||||
}
|
}
|
||||||
}).then((data) => {
|
}).then((data) => {
|
||||||
cy.validateSwaggerSchema('post', 201, '/nginx/proxy-hosts', data);
|
cy.validateSwaggerSchema('post', 201, '/nginx/proxy-hosts', data);
|
||||||
|
Reference in New Issue
Block a user