263 lines
7.5 KiB
Org Mode
263 lines
7.5 KiB
Org Mode
:PROPERTIES:
|
|
:ID: a9829b5d-690d-4a21-ba94-ac8beac4d439
|
|
:END:
|
|
#+title: old_nginx_code
|
|
#+filetags: :server:
|
|
|
|
|
|
|
|
-> % cat /etc/nginx/sites-available/zserver
|
|
|
|
|
|
server {
|
|
server_name zainezq.com;
|
|
|
|
access_log /var/log/nginx/zserver.access.log combined;
|
|
error_log /var/log/nginx/zserver.error.log warn;
|
|
# Basic authentication for the entire server
|
|
auth_basic "Restricted Access";
|
|
auth_basic_user_file /etc/nginx/.htpasswd;
|
|
|
|
# Root location
|
|
location / {
|
|
proxy_set_header Host $host;
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
proxy_set_header X-Forwarded-Proto $scheme;
|
|
proxy_redirect off;
|
|
|
|
root /home/zaine/master-folder/org_files/org_web/output;
|
|
index index.html index.htm;
|
|
try_files $uri $uri/ =404;
|
|
}
|
|
|
|
location /nginx_status {
|
|
stub_status;
|
|
}
|
|
|
|
location /dockge/ {
|
|
proxy_pass http://127.0.0.1:5021/;
|
|
proxy_set_header Host $host;
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
proxy_set_header X-Forwarded-Proto $scheme;
|
|
}
|
|
|
|
|
|
|
|
location /guac/ {
|
|
proxy_pass http://127.0.0.1:3003/guacamole/;
|
|
proxy_http_version 1.1;
|
|
|
|
proxy_set_header Host $host;
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
proxy_set_header X-Forwarded-Proto $scheme;
|
|
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
proxy_set_header Connection $connection_upgrade;
|
|
}
|
|
|
|
# PGAdmin4 location
|
|
location /pgadmin4/ {
|
|
proxy_set_header X-Script-Name /pgadmin4;
|
|
proxy_set_header Host $host;
|
|
proxy_pass http://127.0.0.1:5050;
|
|
proxy_redirect off;
|
|
}
|
|
|
|
location /pdf/ {
|
|
proxy_pass http://127.0.0.1:8002/pdf/;
|
|
proxy_set_header X-Script-Name /pdf;
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
proxy_set_header Host $host;
|
|
proxy_redirect off;
|
|
}
|
|
|
|
location /calibre {
|
|
proxy_bind $server_addr;
|
|
proxy_pass http://127.0.0.1:8083;
|
|
proxy_set_header Host $http_host;
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
proxy_set_header X-Scheme $scheme;
|
|
proxy_set_header X-Script-Name /calibre; # IMPORTANT: path has NO trailing slash
|
|
# This rewrites Calibre-Web's internal paths
|
|
proxy_redirect off;
|
|
proxy_http_version 1.1;
|
|
client_max_body_size 100M;
|
|
}
|
|
|
|
|
|
location /codeserver/ {
|
|
proxy_pass http://localhost:8441/;
|
|
rewrite ^/codeserver(/.*)$ $1 break;
|
|
|
|
proxy_set_header Host $host;
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
proxy_set_header Connection "upgrade";
|
|
proxy_set_header Accept-Encoding gzip;
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
proxy_set_header X-Forwarded-Proto $scheme;
|
|
}
|
|
|
|
location /filebrowser {
|
|
# prevents 502 bad gateway error
|
|
proxy_buffers 8 32k;
|
|
proxy_buffer_size 64k;
|
|
|
|
client_max_body_size 75M;
|
|
|
|
# redirect all HTTP traffic to localhost:8088;
|
|
proxy_pass http://127.0.0.1:9991;
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
proxy_set_header Host $http_host;
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
#proxy_set_header X-NginX-Proxy true;
|
|
|
|
# enables WS support
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
proxy_set_header Connection "upgrade";
|
|
|
|
proxy_read_timeout 999999999;
|
|
}
|
|
|
|
|
|
# Miniflux location
|
|
location /miniflux/ {
|
|
proxy_set_header Host $host;
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
proxy_set_header X-Forwarded-Proto $scheme;
|
|
proxy_pass http://127.0.0.1:9433/miniflux/;
|
|
proxy_redirect off;
|
|
}
|
|
|
|
# Jupyter location
|
|
location /jupyter/ {
|
|
proxy_set_header Host $host;
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
proxy_set_header X-Forwarded-Proto $scheme;
|
|
proxy_pass http://127.0.0.1:8888/jupyter/;
|
|
proxy_redirect off;
|
|
|
|
# WebSocket support
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
proxy_set_header Connection "Upgrade";
|
|
}
|
|
|
|
location /portainer/ {
|
|
proxy_pass https://localhost:9443/;
|
|
proxy_ssl_verify off; # Because Portainer uses a self-signed cert by default
|
|
proxy_set_header Host $host;
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
proxy_set_header X-Forwarded-Proto $scheme;
|
|
proxy_set_header Authorization "";
|
|
# Required for WebSocket support
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
proxy_set_header Connection "upgrade";
|
|
|
|
# Rewrite URL base path
|
|
rewrite ^/portainer(/.*)$ $1 break;
|
|
}
|
|
|
|
location /wireguard/ {
|
|
proxy_pass http://127.0.0.1:124/;
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
proxy_set_header Connection "Upgrade";
|
|
proxy_set_header Host $host;
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
proxy_set_header X-Forwarded-Proto $scheme;
|
|
|
|
# Rewrite assets for subpath compatibility
|
|
proxy_set_header Accept-Encoding "";
|
|
sub_filter 'href="/' 'href="/wireguard/';
|
|
sub_filter 'src="/' 'src="/wireguard/';
|
|
sub_filter_types text/css application/javascript;
|
|
sub_filter_once off;
|
|
}
|
|
|
|
# /password -> /password/
|
|
location = /password { return 301 /password/; }
|
|
|
|
# Main app/API (disable inherited basic auth here)
|
|
location ^~ /password/ {
|
|
auth_basic off;
|
|
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Host $host;
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
proxy_set_header X-Forwarded-Proto $scheme;
|
|
|
|
# WebSockets
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
proxy_set_header Connection "upgrade";
|
|
|
|
# Keep the /password prefix upstream (NO trailing slash here)
|
|
proxy_pass http://127.0.0.1:8006;
|
|
}
|
|
|
|
# (Optional but tidy) If you keep a dedicated WS block, disable auth there too
|
|
location ^~ /password/notifications/hub {
|
|
auth_basic off;
|
|
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
proxy_set_header Connection "upgrade";
|
|
proxy_set_header Host $host;
|
|
|
|
proxy_pass http://127.0.0.1:8006;
|
|
}
|
|
|
|
|
|
# Optional: Add a custom error page
|
|
error_page 500 502 503 504 /50x.html;
|
|
location = /50x.html {
|
|
root /usr/share/nginx/html;
|
|
}
|
|
|
|
# Optional: Cache static assets for performance (add this new block)
|
|
# location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff|woff2|ttf|eot|svg|html|htm)$ {
|
|
# root /home/zaine/master-folder/org_files/org_web/output;
|
|
# expires 30d;
|
|
# access_log off;
|
|
# }
|
|
|
|
# Optional: Deny access to hidden files
|
|
location ~ /\. {
|
|
deny all;
|
|
}
|
|
|
|
listen 443 ssl; # managed by Certbot
|
|
ssl_certificate /etc/letsencrypt/live/zainezq.com-0001/fullchain.pem; # managed by Certbot
|
|
ssl_certificate_key /etc/letsencrypt/live/zainezq.com-0001/privkey.pem; # managed by Certbot
|
|
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
|
|
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
server {
|
|
if ($host = zserver.zapto.org) {
|
|
return 301 https://$host$request_uri;
|
|
} # managed by Certbot
|
|
|
|
listen 80;
|
|
server_name zserver.zapto.org;
|
|
return 404; # managed by Certbot
|
|
}
|
|
|