Nginx Proxy Manager
name: core-proxymanager
services:
proxymanager:
image: jc21/nginx-proxy-manager:latest #pknw1/jc21_nginx-proxy-manager:160725 #jc21/nginx-proxy-manager:latest
restart: unless-stopped
ports:
- 149.202.72.112:80:80
- 149.202.72.112:443:443
- 149.202.72.112:25:25
- 149.202.72.112:587:587
- 100.100.69.2:82:81
- 172.22.20.1:81:81
- 172.22.20.1:80:80
volumes:
- ./config/data:/data
- ./config/letsencrypt:/etc/letsencrypt
- ./config/includes:/etc/nginx/conf.d/custom
- ./config/error:/etc/nginx/error
#- ./config/data/nginx/nginx.conf:/etc/nginx/nginx.conf
#- ./config/data/override/conf.d/include:/etc/nginx/conf.d/include
#- ./config/letsencrypt:/etc/letsencrypt
#- /dev/shm/nginx:/var/cache/nginx
container_name: proxymanager
hostname: proxymanager
networks:
- proxy
- admin
- dmz
environment:
- DISABLE_IPV6=True
- X_FRAME_OPTIONS=sameorigin
- IP_RANGES_FETCH_ENABLED=False
- VIRTUAL_HOST=proxymanager.uptime.pknw1.co.uk,proxymanager.admin.pknw1.co.uk
- VIRTUAL_PORT=81
- VIRTUAL_PROTO=http
ulimits:
nofile:
soft: 65535
hard: 65535
healthcheck:
test: ["CMD", "/usr/bin/check-health"]
interval: 60s
timeout: 30s
networks:
admin:
external: true
proxy:
external: true
tailscale:
external: true
dmz:
external: true
q
custom error pages
custom advanced code snippets
.
├── error
│ ├── 401.html
│ ├── 401_raw
│ ├── 402.html
│ ├── 503.html
│ ├── 503_raw
│ ├── bak
│ ├── blank.html
│ └── special.html
└── includes
├── blockai.conf
├── buffering.conf
├── error_401.conf
├── error_402.conf
├── error_503.conf
├── error_blank.conf
├── robots.conf
└── wp-exc.conf
include/blockai.conf
access_log /data/logs/blocked_ai.log;
error_log /data/logs/blocked_ai.log warn;
if ($http_user_agent ~* "(wget|GPTBot|OAI-SearchBot|Googlebot|MJ12bot|Applebot|PetalBot|serpstatbot)") {
return 301 https://block.pknw1.co.uk;
#return 444;
}
include/buffering.conf
proxy_buffers 32 1024k;
proxy_buffer_size 1024k;
proxy_busy_buffers_size 1024k;
proxy_max_temp_file_size 0;
include/blocking.conf
location ~ ^/(wp-[^/]*|[^/]+\.php)$ {
access_log /data/logs/wp_php_catch.log;
return 301 https://block.pknw1.co.uk;
}
include/robots.conf
location = /robots.txt {
add_header Content-Type text/plain;
return 200 "User-agent: *\nDisallow: /\n";
}
include/custom_error.conf
error_page 400 401 402 403 404 405 408 426 =401 /_custom_blank.html;
location = /_custom_blank.html {
internal;
alias /etc/nginx/error/blank.html;
}
include/XXXXXX.conf
include/XXXXXX.conf
Custom response for HTTP Code |
|
Robots.txt
location = /robots.txt {
add_header Content-Type text/plain;
return 200 "User-agent: *\nDisallow: /\n";
}
Catch NastyURIs
location ~ ^/(wp-[^/]*|[^/]+\.php)$ {
access_log /data/logs/wp_php_catch.log;
return 301 https://block.pknw1.co.uk;
}
Proxy Buffers
proxy_buffers 32 1024k;
proxy_buffer_size 1024k;
proxy_busy_buffers_size 1024k;
proxy_max_temp_file_size 0;
BlockAI
access_log /data/logs/blocked_ai.log;
error_log /data/logs/blocked_ai.log warn;
if ($http_user_agent ~* "(wget|GPTBot|OAI-SearchBot|Googlebot|MJ12bot|Applebot|PetalBot|serpstatbot)") {
return 301 https://block.pknw1.co.uk;
#return 444;
}
URI starstwith action
location ^~ /admin {
return 301 /login;
}
URI is exactly
location /ip {
return 200 "$remote_addr | $http_x_forwarded_for\n";
}
Backend response code custom responses
error_page 400 401 403 404 500 502 503 504 =301 https://dim.notflix.pknw1.co.uk;
Response search and replace
sub_filter 'Welcome' 'PK';
sub_filter_once on;
Add headers to response
more_set_headers 'Server: CuteKitten';
q