Để bắt đầu, tôi không rành về proxy máy chủ nhưng tôi có thể hiểu được một chút.
Đây là kịch bản.
Tôi đang chạy một ứng dụng trong vùng chứa docker, sử dụng django, nginx, daphne, redis trên máy chủ apache.
- Truy cập trang web do apache điều hành bằng example.com.
- Apache thực hiện chuyển proxy tới Nginx (chạy trong vùng chứa) 80:8080 và 443:8443
- Sau đó, Nginx chuyển cho Daphne để chạy ứng dụng thực tế đang chạy trên cổng 8000 trong vùng chứa
Trang web chạy hoàn hảo ngoại trừ kết nối websocket trả về lỗi 404 khi truy cập example.com
Nhưng nếu tôi truy cập example.com:8443 thì ổ cắm web hoạt động như mong đợi.
Tôi đã thử chuyển số cổng cùng với thẻ proxy nhưng có vẻ như nó không bao giờ xuất hiện trong tiêu đề yêu cầu.
Tôi chỉ thực sự cần biết nơi để tìm để tìm ra điều này. Đây có phải là sự cố của Apache, Nginx hoặc Daphne không?
Tôi đã thử rất nhiều thứ, nó không đáng để liệt kê vào lúc này. Tôi hy vọng rằng ổ cắm web hoạt động khi tôi nhập số cổng vào thanh địa chỉ là manh mối.
Cảm ơn rất nhiều về sự trợ giúp của bạn!
Cập nhật
Chỉ thị của Apache để chuyển đến Nginx
SSLProxyEngine Bật
SSLProxyKhông xác minh
SSLProxyCheckPeerCN tắt
SSLProxyCheckPeerName tắt
SSLProxyCheckPeerHết hạn
ProxyPass "/" "https://localhost:8443/"
ProxyPassReverse "/" "https://localhost:8443/"
cấu hình Nginx
ứng dụng ngược dòng {
ứng dụng máy chủ: 8000;
}
người phục vụ {
nghe 80;
server_name secret.com;
địa điểm / {
proxy_pass http://ứng dụng;
proxy_http_version 1.1;
proxy_set_header Nâng cấp $http_upgrade;
proxy_set_header Kết nối "Nâng cấp";
proxy_set_header Máy chủ $http_host;
}
vị trí /tĩnh/ {
bí danh /tĩnh/;
}
}
người phục vụ {
nghe 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;
địa điểm / {
try_files $uri @proxy_to_app;
}
vị trí @proxy_to_app {
proxy_pass http://ứng dụng;
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 Nâng cấp $http_upgrade;
proxy_set_header Kết nối "Nâng cấp";
proxy_set_header Máy chủ $http_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-Host $server_name;
proxy_set_header X-Forwarded-Port $server_port;
}
vị trí /tĩnh/ {
bí danh /tĩnh/;
}
}
Docker Soạn tập tin
phiên bản: '3.7'
dịch vụ:
ứng dụng:
khối lượng:
- tài sản:/tài sản
hình ảnh: videsignz/ktech:latest
cổng:
- "8000:8000"
nginx:
xây dựng: ./nginx
khối lượng:
- tài sản:/tài sản
- /etc/ssl/certs:/etc/nginx/certs
- /etc/ssl/private:/etc/nginx/private
cổng:
- "8080:80"
- "8443:443"
phụ thuộc:
- ứng dụng
làm lại:
hình ảnh: redis: mới nhất
cổng:
- "6379:6379"
phụ thuộc:
- ứng dụng
khối lượng:
tài sản:
Tệp điểm đầu vào
#!/bin/sh
python manage.py collstatic --no-input
daphne -b 0.0.0.0 -p 8000 core.asgi:application
Cổng cấu hình máy chủ ảo Apache đầy đủ cổng 80 và cổng 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>