होम सर्वर (डेवुआन + अपाचे) + वायरगार्ड + वीपीएस (फ्रीबीएसडी + एनजीआईएनएक्स) के साथ रिवर्स प्रॉक्सी करने के लिए मेमो

केवल माउस से चित्र बनाना।
-—
मैं अपने होम सर्वर से अपनी साइट होस्ट करना चाहता था, लेकिन आईपी एड्रेस का सीधे सामने आना थोड़ा डरावना था।
और मैं घर से, लैन के भीतर से, डोमेन से सीधे एक्सेस नहीं कर पा रहा था, और मैं इस निष्कर्ष पर पहुंचा कि यह असंभव था क्योंकि मेरे होम राउटर में NAT फ़ंक्शन नहीं था।
घर से एक्सेस आईपी एड्रेस के माध्यम से होता है, और बाहर से डोमेन के माध्यम से। यह असुविधाजनक है, इसलिए मैंने सोचा कि क्या आईपी के माध्यम से वीपीएन स्थापित करने से इसे हल किया जा सकता है? इसमें दो फायदे थे, इसलिए मैंने इसे आज़माया।
परिणामस्वरूप, मैं एक पूर्ण नौसिखिया था, इसलिए यह मुश्किल था, लेकिन रिवर्स प्रॉक्सी का उपयोग करने से सर्वर लोड भी वितरित होता है और प्रोसेसिंग भी तेज हो जाती है, जिसके परिणामस्वरूप मुझे बहुत संतोषजनक परिणाम मिला।
तब, सुवाको ने एक लेख अपडेट किया था!
【डिजिटल स्वायत्तता】होम सर्वर से वायरगार्ड का उपयोग करके होस्टिंग कैसे करें
मैंने अतीत में एसएसएच कनेक्शन किया है, और वायरगार्ड के बारे में आर्क विकी पर भी जानकारी है, इसलिए मैं इसे आसानी से कर पाया, लेकिन मैं उन हिस्सों को रिकॉर्ड करूंगा जहां मैं फंस गया था और जो मैंने एक अलग वीपीएस में जाने के लिए बैकअप के रूप में संशोधित किया था।
अधिक जानकारी के लिए, कृपया सुवाको के पेज पर देखें।
यह लगभग सुवाको के समान है, इसलिए मैं उनके हटाने के अनुरोध का पालन करूंगा।
यह उपरोक्त वातावरण में मेरे नोट्स के लिए है। मैं इसे व्यक्तिगत रूप से वेब पर छोड़ दूंगा क्योंकि मुझे एनजीआईएनएक्स को भूलने की संभावना है।
वीपीएस साइड सेटिंग्स
फ़ायरवॉल सेटिंग्स
/etc/pf.conf
set skip on lo
exsrv1 = वीपीएस मशीन को असाइन किया गया ग्लोबल आईपी एड्रेस
insrv1 = 192.168.10.101 #वायरगार्ड पर वीपीएस का निजी आईपी?
#insrv2 = 192.168.10.102 #वायरगार्ड पर वीपीएस का निजी आईपी? यदि कनेक्ट करने के लिए कुछ और है तो जोड़ें
block return
pass
#वायरगार्ड पर पोर्ट 51820/यूडीपी का उपयोग किया जाता है, इसलिए इसे खोलें
pass in on wg0
pass in inet proto udp from any to any port 51820
# एसएसएचवायरगार्ड एसएसएच कनेक्शन के लिए
pass in on wg0 proto tcp from 192.168.10.0/24 to any port 22
block in on egress proto tcp from any to any port 22
/etc/wireguard/wg0.conf
[Interface]
Address = 192.168.10.1/24
PrivateKey = वीपीएस पर wg genkey द्वारा जारी की गई कुंजी दर्ज करें
ListenPort = 51820
[Peer]
PublicKey = होम सर्वर पर wg genkey द्वारा जारी की गई कुंजी दर्ज करें
PreSharedKey = ऊपर जैसा ही
AllowedIPs = 192.168.10.101/32
PersistentKeepalive = 25
*/nginx.conf
शायद यह बहुत गड़बड़ है, लेकिन यह काम कर रहा है, तो ठीक है!
worker_processes 1;
events {
worker_connections 4096;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
tcp_nopush on;
keepalive_timeout 300;
proxy_buffering on;
proxy_buffer_size 8k;
proxy_buffers 100 8k;
proxy_cache_path /var/cache/nginx/cache/zone1 levels=1:2 keys_zone=zone1:64m inactive=7d max_size=2048m;
proxy_cache_path /var/cache/nginx/cache/zone2 levels=1:2 keys_zone=zone2:64m inactive=7d max_size=2048m;
proxy_cache_path /var/cache/nginx/cache/zone3 levels=1:2 keys_zone=zone3:64m inactive=7d max_size=2048m;
proxy_cache_path /var/cache/nginx/cache/zone4 levels=1:2 keys_zone=zone4:64m inactive=7d max_size=2048m;
proxy_temp_path /var/cache/nginx/temp;
server {
listen 80;
server_name #डोमेन नाम;
client_max_body_size 10240M;
location / {
proxy_pass http://192.168.10.101/;
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;
# केवल स्थिर सामग्री को कैश करें
if ($uri ~* "\.(jpg|jpeg|png|webp|gif|mp4|css|js|ico|woff2)$") {
set $do_not_cache 0;
}
proxy_no_cache $do_not_cache;
proxy_cache_bypass $do_not_cache;
proxy_cache zone1;
proxy_cache_key $scheme$proxy_host$uri$is_args$args;
proxy_cache_valid 200 201 6h;
proxy_cache_valid 302 3h;
proxy_cache_valid 301 1d;
proxy_cache_valid 404 5m;
proxy_cache_lock on;
proxy_buffering on;
}
}
server {
listen 443 ssl;
server_name डोमेन नाम;
client_max_body_size 10240M;
ssl_certificate # एसएसएल प्रमाणपत्र;
ssl_certificate_key #ऊपर जैसा ही
location / {
proxy_pass http://192.168.10.101;
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;
# केवल स्थिर सामग्री को कैश करें
if ($uri ~* "\.(jpg|jpeg|png|webp|gif|mp4|css|js|ico|woff2)$") {
set $do_not_cache 0;
}
proxy_no_cache $do_not_cache;
proxy_cache_bypass $do_not_cache;
proxy_cache zone2;
proxy_cache_key $mobile$scheme$proxy_host$uri$is_args$args;
proxy_cache_valid 200 201 6h;
proxy_cache_valid 302 3h;
proxy_cache_valid 301 1d;
proxy_cache_valid 404 5m;
proxy_cache_lock on;
proxy_buffering on;
}
}
server {
listen 80;
server_name soulminingrig.com;
client_max_body_size 500M;
location / {
proxy_pass http://192.168.10.101;
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;
# केवल स्थिर सामग्री को कैश करें
if ($uri ~* "\.(jpg|jpeg|png|webp|gif|mp4|css|js|ico|woff2)$") {
set $do_not_cache 0;
}
proxy_no_cache $do_not_cache;
proxy_cache_bypass $do_not_cache;
proxy_cache zone3;
proxy_cache_key $mobile$scheme$proxy_host$uri$is_args$args;
proxy_cache_valid 200 201 6h;
proxy_cache_valid 302 3h;
proxy_cache_valid 301 1d;
proxy_cache_valid 404 5m;
proxy_cache_lock on;
proxy_buffering on;
}
}
server {
listen 443 ssl;
server_name soulminingrig.com www.soulminingrig.com;
client_max_body_size 500M;
ssl_certificate # एसएसएल प्रमाणपत्र;
ssl_certificate_key #ऊपर जैसा ही
location / {
proxy_pass http://192.168.10.101; # कृपया इसे रिवर्स प्रॉक्सी गंतव्य के आईपी पते से बदलें
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;
# केवल स्थिर सामग्री को कैश करें
if ($uri ~* "\.(jpg|jpeg|png|webp|gif|mp4|css|js|ico|woff2)$") {
set $do_not_cache 0;
}
proxy_no_cache $do_not_cache;
proxy_cache_bypass $do_not_cache;
proxy_cache zone1;
proxy_cache_key $mobile$scheme$proxy_host$uri$is_args$args;
proxy_cache_valid 200 201 6h;
proxy_cache_valid 302 3h;
proxy_cache_valid 301 1d;
proxy_cache_valid 404 5m;
proxy_cache_lock on;
proxy_buffering on;
}
}
}
मैं इस वीपीएस पर कैश रखकर गति बढ़ाने का लक्ष्य बना रहा हूं। अगर कोई समस्या आती है तो मैं इसे बंद कर दूंगा।
मुझे विशेष रूप से यहां समस्या हुई:
client_max_body_size 500M;
एनजीआईएनएक्स में, डिफ़ॉल्ट अपलोड फ़ाइल का आकार 1 एमबी तक होता है, इसलिए मुझे यह समझने में कुछ समय लगा कि भले ही होम सर्वर पर अपलोड फ़ाइल का आकार बड़ा सेट किया गया हो, अगर एनजीआईएनएक्स भी कॉन्फ़िगर नहीं किया गया है, तो यह ठीक से काम नहीं करेगा।
और, जब मैंने ज़ोन सेटिंग्स को एक साथ रखा, तो एक त्रुटि हुई, इसलिए मैंने mkdir के साथ फ़ोल्डर बनाए और प्रत्येक के लिए कैश फ़ोल्डर को अलग कर दिया।
और, मैंने एनजीआईएनएक्स और होम सर्वर के साथ एसएसएच कनेक्शन भी स्थापित किया।
होम सर्वर साइड सेटिंग्स (अपाचे2)
/etc/wireguard/wg0.conf
[Interface]
PrivateKey = #होम सर्वर पर wg genkey द्वारा जारी की गई कुंजी दर्ज करें
ListenPort = 51820
Address = 192.168.10.101/24 #वायरगार्ड पर इस मशीन का निजी आईपी
DNS = 8.8.8.8
[Peer]
PublicKey = #वीपीएस पर wg genkey द्वारा जारी की गई कुंजी दर्ज करें
PreSharedKey = #होम सर्वर की PreSharedKey wg genkey द्वारा जारी की गई कुंजी दर्ज करें
Endpoint = #वीपीएस का ग्लोबल आईपी एड्रेस :51820
AllowedIPs = 192.168.10.0/24
PersistentKeepalive = 25
मैं एक बार इस वायरगार्ड सेटअप में फंस गया था क्योंकि यह डीएनएस सेटिंग्स के बिना कनेक्ट नहीं हो रहा था।
मैं अस्थायी रूप से Google के डीएनएस का उपयोग कर रहा हूं, लेकिन जब मैं ठीक हो जाऊंगा तो शायद इसे बदल दूंगा।
और विविध नोट्स
उपरोक्त सेटिंग्स के साथ, यह मल्टी-डोमेन के साथ काम नहीं कर रहा था, और दूसरा डोमेन पंजीकृत होने पर भी केवल पहला डोमेन प्रदर्शित होता था। पोर्ट बदलने से भी काम नहीं चला, और मैं सोच रहा था कि ऐसा क्यों है, तब मुझे एहसास हुआ कि मैंने apache2.conf में नए डोमेन के लिए गंतव्य निर्देशिका का चयन नहीं किया था।
<Directory */जहां नई डोमेन फाइलें हैं/>
# Options Indexes FollowSymLinks
# AllowOverride None
# Require all granted
Require all granted
AllowOverride All
Options FollowSymLinks MultiViews
</Directory>
क्या यह समझना सही है कि इससे अलगाव संभव हुआ?
इसके अलावा, जब मैंने वर्डप्रेस में डिफ़ॉल्ट रूप से रिवर्स प्रॉक्सी का उपयोग किया, तो एसएसएल प्रमाणीकरण में भ्रम पैदा हुआ, और यह एचटीटीपी पर ठीक से प्रदर्शित होता था, लेकिन एचटीटीपीएस कनेक्शन पर सीएसएस काम करना बंद कर देता था। मुझे आश्चर्य हुआ कि ऐसा क्यों हुआ, और मुझे पता चला कि इसे wp-config में निम्नलिखित जोड़कर हल किया जा सकता है।
$_SERVER['HTTPS']='on';
अन्य तरीके भी थे, लेकिन यह तरीका सबसे अच्छा काम किया क्योंकि लॉगिन स्क्रीन अचानक एचटीटीपी संचार में बदल जाती थी।
शायद यह अभी भी संघर्ष कर रहा है।
मुझे पोर्ट बदलना चाहिए, लेकिन मैं थक गया हूं, इसलिए मैं इसे बाद में करूंगा।
यह बिल्कुल भी व्यवस्थित नहीं है, लेकिन मैं इसे एक मेमो के रूप में छोड़ रहा हूं ताकि मैं इसे भूल न जाऊं।