Не удается настроить Nginx для обслуживания HTTPS, однако работает через HTTP - PullRequest
0 голосов
/ 31 марта 2020

Во-первых, я полностью понимаю, что есть много, много статей, которые отражают эту самую топику c. Однако, прочитав и перечитав многие из них, я все еще застрял.

У меня очень простая веб-страница stati c (это страница Hello World HTML, но в итоге она будет работать приложение реагирования на сборку), которое мне нужно было обслужить через Nginx через HTTPS .

Я смог сервировать HTML через HTTP , но не HTTPS .

Мой Nginx файл конфигурации, который работает правильно для обслуживания более HTTP :

server {
  listen 80; 

  server_name app.mycompany.com;
  root /opt/mycompany/mycompany-web/packages/client/build;
  index index.html;


  access_log /var/log/nginx/app.mycompany.com.access.log;
  error_log /var/log/nginx/app.mycompany.com.error.log debug;

  location / {
    try_files $uri /index.html =404;
  }
}

Мой Nginx конфигурационный файл, который НЕ работает правильно для обслуживания через HTTP :

server {
  listen [::]:443 ssl ipv6only=on;
  listen 443 ssl;

  server_name app.mycompany.com;
  root /opt/mycompany/mycompany-web/packages/client/build;
  index index.html;

  ssl_certificate /etc/letsencrypt/live/app.mycompany.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/app.mycompany.com/privkey.pem;
  include /etc/letsencrypt/options-ssl-nginx.conf;
  ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

  access_log /var/log/nginx/app.mycompany.com.access.log;
  error_log /var/log/nginx/app.mycompany.com.error.log debug;

  location / {
    try_files $uri /index.html =404;
  }
}

Используя первый конфиг, моя веб-страница обслуживается правильно, однако, используя второй конфиг, я просто получаю 404.

Из того, что я прочитал в inte rnet вышеизложенное выглядит правильно.

Кто-нибудь видит, где я могу пойти не так? Как начать отладку моего HTML, не обслуживаемого по HTTP?

Обновление (согласно комментарию Тимо Старка)

curl в https://localhost:443 возвращает 404:

# curl -ikv https://localhost:443
* Rebuilt URL to: https://localhost:443/
* Hostname was NOT found in DNS cache
*   Trying 127.0.0.1...
* Connected to localhost (127.0.0.1) port 443 (#0)
* successfully set certificate verify locations:
*   CAfile: none
  CApath: /etc/ssl/certs
* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS handshake, Server hello (2):
* SSLv3, TLS handshake, CERT (11):
* SSLv3, TLS handshake, Server key exchange (12):
* SSLv3, TLS handshake, Server finished (14):
* SSLv3, TLS handshake, Client key exchange (16):
* SSLv3, TLS change cipher, Client hello (1):
* SSLv3, TLS handshake, Finished (20):
* SSLv3, TLS change cipher, Client hello (1):
* SSLv3, TLS handshake, Finished (20):
* SSL connection using ECDHE-RSA-AES256-GCM-SHA384
* Server certificate:
*    subject: CN=app.mycompany.com
*    start date: 2020-03-31 18:34:56 GMT
*    expire date: 2020-06-29 18:34:56 GMT
*    issuer: C=US; O=Let's Encrypt; CN=Let's Encrypt Authority X3
*    SSL certificate verify ok.
> GET / HTTP/1.1
> User-Agent: curl/7.35.0
> Host: localhost
> Accept: */*
> 
< HTTP/1.1 404 Not Found
HTTP/1.1 404 Not Found
* Server nginx/1.4.6 (Ubuntu) is not blacklisted
< Server: nginx/1.4.6 (Ubuntu)
Server: nginx/1.4.6 (Ubuntu)
< Date: Wed, 01 Apr 2020 00:02:16 GMT
Date: Wed, 01 Apr 2020 00:02:16 GMT
< Content-Type: text/html
Content-Type: text/html
< Content-Length: 177
Content-Length: 177
< Connection: keep-alive
Connection: keep-alive

< 
<html>
<head><title>404 Not Found</title></head>
<body bgcolor="white">
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.4.6 (Ubuntu)</center>
</body>
</html>
* Connection #0 to host localhost left intact

Обновление 2

$ nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

И мой / etc / nginx / nginx .conf файл:

# cat /etc/nginx/nginx.conf

user  nginx;
worker_processes  1;
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    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;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;
    #gzip  on;
    include /etc/nginx/conf.d/*.conf;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...