Điểm:0

Nâng cấp websocket bằng Nginx và Daphne. Chỉ hoạt động nếu tôi đặt số cổng vào thanh địa chỉ

lá cờ in

Để 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.

  1. Truy cập trang web do apache điều hành bằng example.com.
  2. Apache thực hiện chuyển proxy tới Nginx (chạy trong vùng chứa) 80:8080 và 443:8443
  3. 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>
lá cờ in
@MichaelHampton Đã cập nhật. Như tôi đã nói, trang web hoạt động hoàn hảo khi được phục vụ. Chỉ các kết nối websocket không thành công trừ khi tôi thêm số cổng vào url.
Gerard H. Pille avatar
lá cờ in
Bạn không hiển thị cấu hình Apache chịu trách nhiệm về 80 -> 8080.
lá cờ in
@GerardH.Pille Đã thêm nó vào cuối. Nó là một tập tin được tạo tự động.
Michael Hampton avatar
lá cờ cz
Rất tiếc, chúng tôi không thể hỗ trợ các hệ thống cPanel. Bạn có thể thử nhận trợ giúp từ bộ phận hỗ trợ cPanel.
Gerard H. Pille avatar
lá cờ in
Tôi vẫn không thấy nơi Apache đang xử lý các kết nối trên cổng 80.
lá cờ in
Của bạn đây @GerardH.Pille Đã thêm nó. Vấn đề lớn nhất của tôi là khi tôi thực hiện chuyển proxy, nó sẽ phá vỡ webmail.connect.ktechonline.com và mail.connect.ktechonline.com. Tôi không chắc chắn cách thực hiện proxypass chỉ trên connect.ktechonline.com.
Gerard H. Pille avatar
lá cờ in
Không có proxypass trong những gì bạn đã thêm. Một proxypass chọn lọc có thể là một quy trình viết lại với cờ P trước khi viết lại và kiểm tra FQDN. Rất nhiều trong số đó trong cấu hình 443.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.