Mam stronę internetową, która pozwala użytkownikom tworzyć portfele dla swoich stron internetowych, po prostu zmieniają swoje rekordy A w swojej domenie i umieszczają adres IP mojego serwera w swoich rekordach, a mapa zostanie odwzorowana na ich stronie internetowej (użytkownik1.przyklad.com). Mój problem polega na tym, że kupiłem domenę, aby to przetestować (przyklad.com) i przekierowuje ją na stronę główną mojej rzeczywistej witryny, na której można skorzystać z tej usługi.
Jedyny sposób, w jaki użytkownik może uzyskać dostęp do swojej witryny, to: http://example.com:3000
- 3000 to port, na którym działa moja aplikacja Node.js. Moja konfiguracja Nginx jest poniżej, czy ktoś może rzucić mi kość?
server {
listen 80;
listen 443 ssl;
listen [::]:443 ssl;
ssl_certificate /etc/nginx/ssl/example.com/cert_chain.crt;
ssl_certificate_key /etc/nginx/ssl/example.com/example.com.key;
server_name example.com *.example.com "";
access_log /var/log/nginx/nginx.vhost.access.log;
error_log /var/log/nginx/nginx.vhost.error.log;
root /opt/33i/;
# Perfect forward secrecy
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/nginx/ssl/example.com/dhparams.pem;
ssl_ciphers ;
# HSTS
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains";
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header X_FORWARDED_PROTO https;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Url-Scheme $scheme;
proxy_redirect off;
proxy_max_temp_file_size 0;
}
}
Jakieś pomysły? Doprowadziło mnie to do szaleństwa!
źródło
$host
zamiast$http_host
? Czy jesteś pewien, że konfiguracja node.js jest poprawna? Również twoje ssl_ciphers są puste.user1.example.com
imię nie odgrywa już w tym żadnej roli.Odpowiedzi:
Myślę, że problem może być na
server_name
linii.Ponieważ jest obecnie implementowany, pasuje do następujących rodzajów żądań:
Host:
nagłówek jestexample.com
Host:
nagłówek kończący się na.example.com
Host:
brak nagłówkaOznacza to, że ta konfiguracja nie pasuje do dowolnych domen, co wygląda tak, jak chcesz.
Teraz najprawdopodobniej masz inny
server
blok w konfiguracji z:Listen 443 ssl default_server;
Host wirtualny zawierający tę dyrektywę jest hostem wirtualnym typu catch-all dla żądań, które w inny sposób nie są dopasowane.
Aby więc rozwiązać problem, musisz usunąć
default_server
dyrektywę zserver
bloku, w którym jest teraz, i dodaćdefault_server
dolisten
dyrektyw tego bloku .źródło
default_server
do swojejlisten
dyrektywy i uruchamiającnginx -t
. Jeśli nginx nie narzeka, to nie ma domyślnego bloku serwera. Jednak oryginalna konfiguracja nie powinna się tak zachowywać.default_server
dyrektywę?