Я использую nginx для обслуживания моего приложения, но я не могу использовать протокол http2, моя nginx версия
nginx version: nginx/1.17.9
версия openssl:
OpenSSL 1.1.1d 10 Sep 2019
содержимое в /etc/nginx/nginx.conf:
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
# run ulimit -n to check
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
server_tokens off;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
# Buffer size for post submission
client_body_buffer_size 10k;
client_max_body_size 8m;
# Buffer size for header
client_header_buffer_size 1k;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
limit_req_zone $request_uri zone=MYZONE:10m rate=35r/s;
include /etc/nginx/conf.d/*.conf;
}
содержимое в /etc/nginx/conf.d/default.conf:
# Expires map
map $sent_http_content_type $expires {
default off;
text/html epoch;
text/css max;
application/javascript max;
~image/ max;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name 0.0.0.0;
expires $expires;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
ssl_certificate /etc/nginx/certs/server.crt;
ssl_certificate_key /etc/nginx/certs/server.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_session_cache shared:SSL:40m;
ssl_session_timeout 4h;
ssl_session_tickets on;
ssl_dhparam /etc/nginx/ssl/dhparam.pem;
add_header Strict-Transport-Security "max-age=31536000" always;
location = /favicon.ico {
log_not_found off;
}
location /static/ {
alias /static_files/;
}
location / {
access_log /var/log/nginx/wsgi.access.log;
error_log /var/log/nginx/wsgi.error_log warn;
proxy_pass http://app_wsgi:8000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
limit_req zone=MYZONE burst=15 nodelay;
}
location /admin {
proxy_pass http://app_wsgi:8000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
auth_basic "Secure Area";
auth_basic_user_file /etc/nginx/.htpasswd;
}
}
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
return 301 https://$host$request_uri;
}
проверка синтаксиса nginx -t:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
после запуска nginx, а затем я делаю команду curl для https и https:
curl -I --http2 0.0.0.0:
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Sat, 25 Apr 2020 10:20:20 GMT
Content-Type: text/html
Content-Length: 162
Connection: keep-alive
Location: https://0.0.0.0/
curl -I --http2 --cacert certs / server.crt https://0.0.0.0
HTTP/2 200
server: nginx
date: Sat, 25 Apr 2020 10:15:20 GMT
content-type: text/html; charset=utf-8
content-length: 13376
x-frame-options: SAMEORIGIN
vary: Cookie, Accept-Encoding
set-cookie: csrftoken=dYCEOQQh70PqCXiyuylGoGS83GEWgU5omH33KnSr2XSziyXNbFoOepKlAprzoA0G; expires=Sat, 24 Apr 2021 10:15:20 GMT; Max-Age=31449600; Path=/; SameSite=Lax
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block
strict-transport-security: max-age=31536000
показывает успешно http2, но я просматриваю веб-страницу https://0.0.0.0, и я проверяю консоль разработчика, я обнаружил, что все запросы все еще используют протокол http / 1.1. Я также go на nginx сервер, чтобы проверить access.log, и есть также все журналы запросов http / 1.1. в журнале ошибок нет ошибок.
Я уже пытался искать и пытаться найти его в течение очень долгих часов, но все еще не могу заставить его работать по протоколу http2. Пожалуйста, помогите мне и большое спасибо!
Обновление: вкладка "Сертификат и безопасность" от chrome: