У нас есть угловое приложение, развернутое на Apache на 443 (SSL) и приложение Django, которое также развернуто на 443 (SSL) с различными настройками ServerName и ServerAlias. В конкретном вызове API (вызов API от angular до django) время ответа (время обработки) превышает 12 минут.
Таким образом, angular вызывает API, и после 3-4 минут ожидания Apache снова вызывает тот же API, а через 7-8 минут Apache возвращает ERR_EMPTY_RESPONSE клиенту (apache), но обработка бэкэнда (Django) все еще продолжается. на.
Этот сценарий происходит только для этого конкретного API.
Раньше, когда angular развертывался на самом узле (для локальной разработки), а на apache на порту 8081 развертывался только django, тогда этот конкретный API работает нормально.
Но когда мы развернули приложение (angular и django) на apache на порту 443 (поддержка SSL), этот конкретный API-интерфейс всегда продолжает возвращать ERR_EMPTY_RESPONSE в angular.
Итак, мой вопрос: почему apache повторяет вызов API через 4-5 минут, когда django не возвращает ответ, а через 7-8 минут он просто возвращает ERR_EMPTY_RESPONSE в угловое приложение.
Мы также использовали настройку TimeOut на 1800 секунд.
Ниже приведены необходимые настройки, используемые в файле настроек https-vhosts для приложения django
TimeOut 1800
ServerName https://djangoapp.example.in
ServerAlias https://djangoapp.example.in
SSLEngine on
SSLCertificateFile "${SSLRoot}/encrypted.crt"
SSLCertificateKeyFile "${SSLRoot}/encrypted_pem.key"
SSLCACertificateFile "${SSLRoot}/encrypted_cabundle.pem"
DocumentRoot "D:/Bitbucket_Dev/example/Scripts/Python_Scripts/src/example/"
<Directory "D:/Bitbucket_Dev/example/Scripts/Python_Scripts/src/example/">
Options +Indexes -Includes -FollowSymLinks -MultiViews +ExecCGI
AllowOverride All
Require all granted
</Directory>
Alias /templates/ "D:/Bitbucket_Dev/example/Scripts/Python_Scripts/src/example/templates/"
<Directory "D:/Bitbucket_Dev/example/Scripts/Python_Scripts/src/example/templates/">
<Files *.html>
Require all granted
</Files>
</Directory>
<Directory "D:/Bitbucket_Dev/example/Scripts/Python_Scripts/src/example/example/">
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIScriptAlias / "D:/Bitbucket_Dev/example/Scripts/Python_Scripts/src/example/example/wsgi.py"
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from *.*.*.*
</Location>
ErrorLog "logs/example/error_log"
CustomLog "logs/example/access_log" common
Также для углового приложения в файле настроек httpd-ssl используются следующие настройки.
Listen 443
<VirtualHost _default_:443>
# General setup for the virtual host
#
ServerName https://angularapp.example.in
ServerAdmin admin@angularapp.example.in
ServerAlias https://angularapp.example.in
TimeOut 1800
DocumentRoot "D:/Bitbucket_Dev/example/Scripts/Front_end/src/dist/main/"
<Directory "D:/Bitbucket_Dev/example/Scripts/Front_end/src/dist/main/">
<Files *.html>
Require all granted
</Files>
Options +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog "${SRVROOT}/logs/example/error.log"
TransferLog "${SRVROOT}/logs/example/access.log"
SSLEngine on
SSLCertificateFile "${SSLRoot}/encrypted.crt"
SSLCertificateKeyFile "${SSLRoot}/encrypted_pem.key"
SSLCACertificatePath "${SSLRoot}/"
SSLCACertificateFile "${SSLRoot}/encrypted_cabundle.pem"
<FilesMatch "\.(cgi|shtml|phtml|php|js|html|css|csv)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory "${SRVROOT}/cgi-bin">
SSLOptions +StdEnvVars
</Directory>
BrowserMatch "MSIE [2-5]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
CustomLog "${SRVROOT}/logs/ssl_request.log" \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>
Как видите, мы используем разные имена ServerName и ServerAlias для обоих приложений, а также используем TimeOut 1800 на обоих виртуальных хостах.
Может кто-нибудь, пожалуйста, помогите мне, где я делаю неправильно, чтобы apache не вызывал API снова через 3-4 минуты и не возвращал ERR_EMPTY_RESPONSE.
В этом случае apache вызывает один и тот же api дважды, он вызывает api впервые, когда angular вызывает api, и снова через 4-5 минут, когда через 4-5 минут django не возвращает ответ. Также через 7-8 минут apache возвращает ERR_EMPTY_RESPONSE в угловое положение, но обработка все еще продолжается в django.