Score:0

การอัปเกรด websocket โดยใช้ Nginx และ Daphne ใช้ได้เฉพาะเมื่อฉันใส่หมายเลขพอร์ตในแถบที่อยู่

ธง in

เริ่มแรกเลย ฉันไม่เชี่ยวชาญเรื่องพร็อกซีของเซิร์ฟเวอร์ แต่ฉันก็พอจะเข้าใจได้บ้าง

นี่คือสถานการณ์

ฉันกำลังเรียกใช้แอพภายในคอนเทนเนอร์นักเทียบท่าโดยใช้ django, nginx, daphne, redis บนเซิร์ฟเวอร์ apache

  1. เยี่ยมชมเว็บไซต์ที่ดำเนินการโดย apache โดยใช้ example.com
  2. Apache ส่งผ่านพร็อกซีไปยัง Nginx (ทำงานในคอนเทนเนอร์) 80:8080 และ 443:8443
  3. จากนั้น 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>
in flag
@MichaelHampton ปรับปรุง อย่างที่ฉันบอกไป ไซต์นี้ทำงานได้อย่างสมบูรณ์แบบในแง่ของการให้บริการ เพียงแค่การเชื่อมต่อ websocket ล้มเหลวเว้นแต่ฉันจะเพิ่มหมายเลขพอร์ตให้กับ url
Gerard H. Pille avatar
in flag
คุณไม่แสดงการกำหนดค่า Apache ที่รับผิดชอบ 80 -> 8080
in flag
@ GerardH.Pille เพิ่มไปที่ส่วนท้าย เป็นไฟล์ที่สร้างขึ้นโดยอัตโนมัติ
Michael Hampton avatar
cz flag
ขออภัย เราไม่สามารถสนับสนุนระบบ cPanel คุณสามารถลองขอความช่วยเหลือจากฝ่ายสนับสนุน cPanel
Gerard H. Pille avatar
in flag
ฉันยังไม่เห็นว่า Apache กำลังจัดการการเชื่อมต่อบนพอร์ต 80 อยู่ที่ใด
in flag
ไปเลย @GerardH.Pille เพิ่มแล้ว ปัญหาใหญ่ที่สุดของฉันคือเมื่อฉันใช้พร็อกซีพาส webmail.connect.ktechonline.com และ mail.connect.ktechonline.com ฉันไม่แน่ใจว่าจะทำ proxypass เฉพาะบน connect.ktechonline.com ได้อย่างไร
Gerard H. Pille avatar
in flag
ไม่มีพรอกซีพาสในสิ่งที่คุณเพิ่ม พร็อกซีพาสแบบเลือกอาจเป็นการเขียนใหม่ด้วย P-flag นำหน้าด้วยการเขียนซ้ำการทดสอบ FQDN มากมายในการกำหนดค่า 443

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา