У меня есть приложение реагировать с маршрутизацией и обслуживается на apache сервере. Бэкэнд приложения - nodejs. Они оба размещены по одной капле в DigitalOcean.
Когда я заходил на мой сайт, например, https://example.com, он отображал приложение, но не может получить API в nodejs бэкэнде, потому что его нет https (http://server_ip: 8080 ). При поиске по net я нашел обратный прокси Apache. Вот мой файл виртуального хоста:
<VirtualHost *:80>
<Directory /var/www/example.com>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
SSLEngine On
SSLProxyEngine On
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
ServerAdmin webmaster@localhost
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =www.example.com [OR]
RewriteCond %{SERVER_NAME} =example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
, и когда я проверяю https://example.com/api/user/all/, он возвращает:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html>
<head>
<title>404 Not Found</title>
</head>
<body>
<h1>Not Found</h1>
<p>The requested URL was not found on this server.</p>
<hr>
<address>Apache/2.4.29 (Ubuntu) Server at example.com Port 443</address>
</body>
</html>
Спасибо!