เริ่มแรกเลย ฉันไม่เชี่ยวชาญเรื่องพร็อกซีของเซิร์ฟเวอร์ แต่ฉันก็พอจะเข้าใจได้บ้าง
นี่คือสถานการณ์
ฉันกำลังเรียกใช้แอพภายในคอนเทนเนอร์นักเทียบท่าโดยใช้ django, nginx, daphne, redis บนเซิร์ฟเวอร์ apache
- เยี่ยมชมเว็บไซต์ที่ดำเนินการโดย apache โดยใช้ example.com
- Apache ส่งผ่านพร็อกซีไปยัง Nginx (ทำงานในคอนเทนเนอร์) 80:8080 และ 443:8443
- จากนั้น Nginx ส่งต่อไปยัง Daphne เพื่อเรียกใช้แอปจริงซึ่งทำงานบนพอร์ต 8000 ในคอนเทนเนอร์
ไซต์ทำงานได้อย่างสมบูรณ์แบบ ยกเว้นการเชื่อมต่อ websocket จะส่งคืน 404 เมื่อไปที่ example.com
แต่ถ้าฉันไปที่ example.com:8443 websockets จะทำงานตามที่คาดไว้
ฉันพยายามส่งหมายเลขพอร์ตพร้อมกับพร็อกซีพาส แต่ดูเหมือนจะไม่ปรากฏในส่วนหัวของคำขอ
ฉันแค่ต้องการทราบว่าจะหาได้จากที่ไหน เป็นปัญหา Apache, Nginx หรือ Daphne หรือไม่
ฉันได้ลองหลายสิ่งหลายอย่างที่มันไม่คุ้มที่จะลงรายการในตอนนี้ ฉันหวังว่าข้อเท็จจริงที่ว่า websockets จะทำงานเมื่อฉันใส่หมายเลขพอร์ตในแถบที่อยู่นั้นเป็นเงื่อนงำ
ขอบคุณล่วงหน้าสำหรับความช่วยเหลือของคุณ!
อัปเดต
คำสั่ง Apache เพื่อส่งผ่านไปยัง Nginx
SSLProxyEngine เปิดอยู่
SSLProxyไม่มีการตรวจสอบ
ปิด SSLProxyCheckPeerCN
SSLProxyCheckPeerName ปิดอยู่
SSLProxyCheckPeerหมดอายุ
ProxyPass "/" "https://localhost:8443/"
ProxyPassReverse "/" "https://localhost:8443/"
การกำหนดค่า Nginx
แอปอัปสตรีม {
แอปเซิร์ฟเวอร์:8000;
}
เซิร์ฟเวอร์ {
ฟัง 80;
server_name secret.com;
ที่ตั้ง / {
proxy_pass http://app;
proxy_http_version 1.1;
proxy_set_header อัพเกรด $http_upgrade;
proxy_set_header การเชื่อมต่อ "อัปเกรด";
proxy_set_header โฮสต์ $http_host;
}
ตำแหน่ง / คงที่ / {
นามแฝง /คงที่/;
}
}
เซิร์ฟเวอร์ {
ฟัง 443 ssl;
server_name secret.com;
ssl_certificate /etc/nginx/certs/srv1.videsignz.com.crt;
ssl_certificate_key /etc/nginx/private/srv1.videsignz.com.key;
ที่ตั้ง / {
try_files $uri @proxy_to_app;
}
ตำแหน่ง @proxy_to_app {
proxy_pass http://app;
proxy_ssl_certificate /etc/nginx/certs/srv1.videsignz.com.crt;
proxy_ssl_certificate_key /etc/nginx/private/srv1.videsignz.com.key;
proxy_http_version 1.1;
proxy_set_header อัพเกรด $http_upgrade;
proxy_set_header การเชื่อมต่อ "อัปเกรด";
proxy_set_header โฮสต์ $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-ส่งต่อ-สำหรับ $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Forwarded-Port $server_port;
}
ตำแหน่ง / คงที่ / {
นามแฝง /คงที่/;
}
}
นักเทียบท่าเขียนไฟล์
รุ่น: '3.7'
บริการ:
แอป:
ปริมาณ:
- ทรัพย์สิน:/ทรัพย์สิน
ภาพ: videsignz/ktech:ล่าสุด
พอร์ต:
- "8000:8000"
จิงซ์:
สร้าง: ./nginx
ปริมาณ:
- ทรัพย์สิน:/ทรัพย์สิน
- /etc/ssl/certs:/etc/nginx/certs
- /etc/ssl/private:/etc/nginx/private
พอร์ต:
- "8080:80"
- "8443:443"
ขึ้นอยู่กับ:
- แอป
เรดดิส:
ภาพ: redis:ล่าสุด
พอร์ต:
- "6379:6379"
ขึ้นอยู่กับ:
- แอป
ปริมาณ:
สินทรัพย์:
ไฟล์จุดเข้า
#!/bin/sh
หลาม Manage.py รวบรวมแบบคงที่ --no-input
แดฟนี -b 0.0.0.0 -p 8000 core.asgi:application
การกำหนดค่าโฮสต์เสมือนของ Apache แบบเต็มพอร์ต 80 และพอร์ต 443
<VirtualHost 198.46.134.221:80>
ServerName connect.ktechonline.com
ServerAlias mail.connect.ktechonline.com www.connect.ktechonline.com
DocumentRoot /home/connktechonline/public_html
ServerAdmin [email protected]
UseCanonicalName Off
## User connktechonline # Needed for Cpanel::ApacheConf
<IfModule userdir_module>
<IfModule !mpm_itk.c>
<IfModule !ruid2_module>
<IfModule !mod_passenger.c>
UserDir disabled
UserDir enabled connktechonline
</IfModule>
</IfModule>
</IfModule>
</IfModule>
# Enable backwards compatible Server Side Include expression parser for Apache versions >= 2.4.
# To selectively use the newer Apache 2.4 expression parser, disable SSILegacyExprParser in
# the user's .htaccess file. For more information, please read:
# http://httpd.apache.org/docs/2.4/mod/mod_include.html#ssilegacyexprparser
<IfModule include_module>
<Directory "/home/connktechonline/public_html">
SSILegacyExprParser On
</Directory>
</IfModule>
<IfModule suphp_module>
suPHP_UserGroup connktechonline connktechonline
</IfModule>
<IfModule suexec_module>
<IfModule !mod_ruid2.c>
SuexecUserGroup connktechonline connktechonline
</IfModule>
</IfModule>
<IfModule ruid2_module>
RMode config
RUidGid connktechonline connktechonline
</IfModule>
<IfModule mpm_itk.c>
# For more information on MPM ITK, please read:
# http://mpm-itk.sesse.net/
AssignUserID connktechonline connktechonline
</IfModule>
<IfModule mod_passenger.c>
PassengerUser connktechonline
PassengerGroup connktechonline
</IfModule>
<IfModule alias_module>
ScriptAlias /cgi-bin/ /home/connktechonline/public_html/cgi-bin/
</IfModule>
# Global DCV Rewrite Exclude
<IfModule rewrite_module>
RewriteOptions Inherit
</IfModule>
Include "/etc/apache2/conf.d/userdata/std/2_4/connktechonline/connect.ktechonline.com/*.conf"
# To customize this VirtualHost use an include file at the following location
# Include "/etc/apache2/conf.d/userdata/std/2_4/connktechonline/connect.ktechonline.com/*.conf"
</VirtualHost>
<VirtualHost 198.46.134.221:443>
ServerName connect.ktechonline.com
ServerAlias mail.connect.ktechonline.com www.connect.ktechonline.com webmail.connect.ktechonline.com cpcontacts.connect.ktechonline.com autodiscover.connect.ktechonline.com cpcalendars.connect.ktechonline.com cpanel.connect.ktechonline.com webdisk.connect.ktechonline.com
DocumentRoot /home/connktechonline/public_html
ServerAdmin [email protected]
UseCanonicalName Off
## User connktechonline # Needed for Cpanel::ApacheConf
<IfModule userdir_module>
<IfModule !mpm_itk.c>
<IfModule !ruid2_module>
<IfModule !mod_passenger.c>
UserDir disabled
UserDir enabled connktechonline
</IfModule>
</IfModule>
</IfModule>
</IfModule>
# Enable backwards compatible Server Side Include expression parser for Apache versions >= 2.4.
# To selectively use the newer Apache 2.4 expression parser, disable SSILegacyExprParser in
# the user's .htaccess file. For more information, please read:
# http://httpd.apache.org/docs/2.4/mod/mod_include.html#ssilegacyexprparser
<IfModule mod_include.c>
<Directory "/home/connktechonline/public_html">
SSILegacyExprParser On
</Directory>
</IfModule>
<Proxymatch ^https?://127\.0\.0\.1:(2082|2083|2077|2078|2079|2080|2086|2087|2095|2096)/>
<IfModule security2_module>
SecRuleEngine Off
</IfModule>
</Proxymatch>
<IfModule mod_suphp.c>
suPHP_UserGroup connktechonline connktechonline
</IfModule>
<IfModule suexec_module>
<IfModule !mod_ruid2.c>
SuexecUserGroup connktechonline connktechonline
</IfModule>
</IfModule>
<IfModule ruid2_module>
RMode config
RUidGid connktechonline connktechonline
</IfModule>
<IfModule mpm_itk.c>
# For more information on MPM ITK, please read:
# http://mpm-itk.sesse.net/
AssignUserID connktechonline connktechonline
</IfModule>
<IfModule mod_passenger.c>
PassengerUser connktechonline
PassengerGroup connktechonline
</IfModule>
<IfModule alias_module>
ScriptAlias /cgi-bin/ /home/connktechonline/public_html/cgi-bin/
</IfModule>
<IfModule ssl_module>
SSLEngine on
SSLCertificateFile /var/cpanel/ssl/apache_tls/connect.ktechonline.com/combined
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
<Directory "/home/connktechonline/public_html/cgi-bin">
SSLOptions +StdEnvVars
</Directory>
</IfModule>
SSLProxyEngine On
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
ProxyPass "/" "https://localhost:8443/"
ProxyPassReverse "/" "https://localhost:8443/"
# To customize this VirtualHost use an include file at the following location
# Include "/etc/apache2/conf.d/userdata/ssl/2_4/connktechonline/connect.ktechonline.com/*.conf"
<IfModule headers_module>
RequestHeader set X-HTTPS 1
</IfModule>
RewriteEngine On
RewriteCond %{HTTP_HOST} =autodiscover.connect.ktechonline.com [OR]
RewriteCond %{HTTP_HOST} =autodiscover.connect.ktechonline.com:443
RewriteCond %{HTTP:Upgrade} !websocket [nocase]
RewriteRule ^ http://127.0.0.1/cgi-sys/autodiscover.cgi [P]
RewriteCond %{HTTP_HOST} =cpanel.connect.ktechonline.com [OR]
RewriteCond %{HTTP_HOST} =cpanel.connect.ktechonline.com:443
RewriteCond %{HTTP:Upgrade} !websocket [nocase]
RewriteRule ^/(.*) /___proxy_subdomain_cpanel/$1 [PT]
ProxyPass "/___proxy_subdomain_cpanel" "http://127.0.0.1:2082" max=1 retry=0
RewriteCond %{HTTP_HOST} =cpcalendars.connect.ktechonline.com [OR]
RewriteCond %{HTTP_HOST} =cpcalendars.connect.ktechonline.com:443
RewriteCond %{HTTP:Upgrade} !websocket [nocase]
RewriteRule ^/(.*) /___proxy_subdomain_cpcalendars/$1 [PT]
ProxyPass "/___proxy_subdomain_cpcalendars" "http://127.0.0.1:2079" max=1 retry=0
RewriteCond %{HTTP_HOST} =cpcontacts.connect.ktechonline.com [OR]
RewriteCond %{HTTP_HOST} =cpcontacts.connect.ktechonline.com:443
RewriteCond %{HTTP:Upgrade} !websocket [nocase]
RewriteRule ^/(.*) /___proxy_subdomain_cpcontacts/$1 [PT]
ProxyPass "/___proxy_subdomain_cpcontacts" "http://127.0.0.1:2079" max=1 retry=0
RewriteCond %{HTTP_HOST} =webdisk.connect.ktechonline.com [OR]
RewriteCond %{HTTP_HOST} =webdisk.connect.ktechonline.com:443
RewriteCond %{HTTP:Upgrade} !websocket [nocase]
RewriteRule ^/(.*) /___proxy_subdomain_webdisk/$1 [PT]
ProxyPass "/___proxy_subdomain_webdisk" "http://127.0.0.1:2077" max=1 retry=0
RewriteCond %{HTTP_HOST} =webmail.connect.ktechonline.com [OR]
RewriteCond %{HTTP_HOST} =webmail.connect.ktechonline.com:443
RewriteCond %{HTTP:Upgrade} !websocket [nocase]
RewriteRule ^/(.*) /___proxy_subdomain_webmail/$1 [PT]
ProxyPass "/___proxy_subdomain_webmail" "http://127.0.0.1:2095" max=1 retry=0
RewriteCond %{HTTP:Upgrade} websocket [nocase]
RewriteCond %{HTTP_HOST} =cpanel.connect.ktechonline.com [OR]
RewriteCond %{HTTP_HOST} =cpanel.connect.ktechonline.com:443
RewriteRule ^/(.*) /___proxy_subdomain_ws_cpanel/$1 [PT]
RewriteCond %{HTTP:Upgrade} websocket [nocase]
RewriteCond %{HTTP_HOST} =webmail.connect.ktechonline.com [OR]
RewriteCond %{HTTP_HOST} =webmail.connect.ktechonline.com:443
RewriteRule ^/(.*) /___proxy_subdomain_ws_webmail/$1 [PT]
RewriteRule ^/Microsoft-Server-ActiveSync /___proxy_activesync/$1 [PT]
ProxyPass "/___proxy_activesync" "http://127.0.0.1:2090/Microsoft-Server-ActiveSync" max=1 retry=0
</VirtualHost>