Forum » Izdelava spletišč » Apache in Node.JS
Apache in Node.JS

dunda ::
Strežnik Ubuntu 18.04, nameščen Apache kot proxy in Node.JS.
Pripravil sem HTTPS HelloWorld primerček in očitno deluje (je tudi lepo v "sudo pm2 show hello", PM2 logi ne vpisujejo ničesar posebnega).
Apache ima narejeno preusmeritev:
Ko pa naložim stran, se mi izpiše vsebina mape. Da sem bolj natančen - če pokličem "www.example.com/nodejs" se izpiše vsebina mape. Če pa direktno pokličem "www.example.com/nodejs/hello.js" pa se izpiše vsebina kode za hello.js. Kaj je narobe?
Pripravil sem HTTPS HelloWorld primerček in očitno deluje (je tudi lepo v "sudo pm2 show hello", PM2 logi ne vpisujejo ničesar posebnega).
#!/usr/bin/env nodejs
var https = require('https');
var fs = require('fs');
var options = {
key: fs.readFileSync('/etc/letsencrypt/live/xxxxx/privkey.pem'),
cert: fs.readFileSync('/etc/letsencrypt/live/xxxxx/cert.pem'),
ca: fs.readFileSync('/etc/letsencrypt/live/xxxxx/chain.pem')
};
https.createServer(options, function (req, res) {
res.writeHead(200);
res.end("Hello world! Node.js is working correctly on HTTPS!!\n");
}).listen(8000);
console.log('Server running at https://127.0.0.1:8080/');
Apache ima narejeno preusmeritev:
ProxyRequests Off
ProxyPreserveHost On
ProxyVia Full
<Proxy *>
Require all granted
</Proxy>
<Location /nodejs>
ProxyPass https://127.0.0.1:8080
ProxyPassReverse https://127.0.0.1:8080
</Location>
Ko pa naložim stran, se mi izpiše vsebina mape. Da sem bolj natančen - če pokličem "www.example.com/nodejs" se izpiše vsebina mape. Če pa direktno pokličem "www.example.com/nodejs/hello.js" pa se izpiše vsebina kode za hello.js. Kaj je narobe?
https://www.kacnje.eu
- spremenil: dunda ()

dunda ::
14. vrstica:
}).listen(8000);
Verjetno bi moralo biti 8080 in ne 8000.
Res je napaka - vendar samo v tej temi, pri sebi sem to hitro popravil

Vseeno pa čestitke za ostro oko.
https://www.kacnje.eu

dunda ::
https://www.kacnje.eu

dunda ::
Hja, sedaj pa res ne vem več. Mogoče bo z novimi informacijami komu kapnilo. Slutim na neko neumnost pri teh nastavitvah za Apache.
V .conf datotekah imam takole:
Ker mi v brskalniku ni delovalo, sem poskusil na samem strežniku in dobil naslednja rezultata:
DELA (pač vrne index.html, v katerem je pravilni odziv Node.js aplikacije).
NE DELA (vrne datoteko "nodejs" datoteko, v kateri je koda za seznam datotek v mapi).
V .conf datotekah imam takole:
<VirtualHost *:80>
ServerAdmin admin@example.com
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} =example.com [OR]
RewriteCond %{SERVER_NAME} =www.example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
ProxyRequests Off
ProxyPreserveHost On
ProxyVia Full
<Proxy *>
Require all granted
</Proxy>
<Location /nodejs>
ProxyPreserveHost On
ProxyPass https://www.example.com:8000
ProxyPassReverse https://www.example.com:8000
</Location>
<Directory "/var/www/example.com">
AuthType Basic
AuthName "Restricted Content"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
Options FollowSymLinks
AllowOverride All
</Directory>
</VirtualHost>
********
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin admin@example.com
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
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
<Directory "/var/www/example.com">
AuthType Basic
AuthName "Restricted Content"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
</Directory>
</VirtualHost>
</IfModule>
Ker mi v brskalniku ni delovalo, sem poskusil na samem strežniku in dobil naslednja rezultata:
sudo wget --user ime --password geslo https://www.example.com:8000
DELA (pač vrne index.html, v katerem je pravilni odziv Node.js aplikacije).
sudo wget --user ime --password geslo https://www.example.com/nodejs
NE DELA (vrne datoteko "nodejs" datoteko, v kateri je koda za seznam datotek v mapi).
https://www.kacnje.eu

dunda ::
Ne pomaga. Pravzaprav ne deluje niti če pokličem:
sudo wget --user ime --password geslo https://www.example.com/nodejs/hello.js
https://www.kacnje.eu

celebro ::
Proxy imaš nastavljen na http (port 80), dostopaš pa preko https (port 443), za katerega si v apache configu nastavil, naj ti samo servira vsebino /var/www/example.com.
Verjetno niti nočeš servirat source-a node applikacije (torej ne rabiš directory sekcije)? Oziroma, če bo apache serviral statiko mimo node-a, ga usmeriš na mapo s statičnimi asseti, ne pa na na source root. Trenutno je verjetno node server source viden na https://www.example.com/hello.js
Če node server ni dosegljiv od zunaj, je brez veza da ga imaš na https, apache ti terminira https iz klientov.
Verjetno niti nočeš servirat source-a node applikacije (torej ne rabiš directory sekcije)? Oziroma, če bo apache serviral statiko mimo node-a, ga usmeriš na mapo s statičnimi asseti, ne pa na na source root. Trenutno je verjetno node server source viden na https://www.example.com/hello.js
Če node server ni dosegljiv od zunaj, je brez veza da ga imaš na https, apache ti terminira https iz klientov.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | apache virtual host in name serverjiOddelek: Izdelava spletišč | 1086 (774) | čuhalev |
» | Apache 2.4Oddelek: Omrežja in internet | 1062 (778) | Mesar |
» | Apache SSL težaveOddelek: Programiranje | 2138 (1590) | hobbit |
» | .htaccess rewrite za poddomenoOddelek: Izdelava spletišč | 1467 (1387) | alessio2 |
» | dve spletni strani??Oddelek: Izdelava spletišč | 2466 (2015) | MRB0rYS |