Czytałem wszystkie dyskusje na ten temat i postanowiłem użyć metody Przekierowanie w pliku httpd.conf bez powodzenia ... Więc wróciłem tutaj do tego dobrze znanego tłumu.
Mamy usługę nazwijmy ją „host1” (na podstawie https), która działa na Centos 6.x Postanowiliśmy dodać tam również naszą stronę internetową, aby wykorzystać zakupione certyfikaty wieloznaczne SSL, które działają dobrze dla dwóch dostępów SSL podczas łączenia https.
Niestety nasza strona internetowa jest niedostępna i upłynął limit czasu, gdy użytkownik pisze naszą domenę.com, www.ourdomain.com lub używa http dla ourdomain.com lub www.ourdomain.com. Wszystko działa dobrze z https dla ourdomain.com, www.ourdomain.com i host1.ourdomain.com.
Poniżej znajdziesz httpd.conf i ssl.conf obcięte do obszarów Virtual Hosts zarówno w ukryciu, jak i ukrywania naszych konkretnych szczegółów.
W tej konfiguracji otrzymuję następujący błąd: httpd:
Ten już się nie dzieje, dzięki za podpowiedzi
Starting httpd: (98)Address already in use: make_sock: could not bind to address [::]:80
------------ Start httpd.conf ------------------
# >>httpd configuration truncated down to Virtual Hosts
#
# Use name-based virtual hosting.
#
NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.ourdomain.com
Redirect permanent / https://www.ourdomain.com/
</VirtualHost>
------------ End httpd.conf ------------------
------------ Start ssl.conf to manage 443 and ssl certificates------------------
# >>SSL Configuration Truncated up to Listen 443 and Virtual Hosts
Listen 443
#Listen for virtual host requests on all IP addresses
NameVirtualHost *:443
# >>SSL Config ...
##
## SSL Virtual Host Context
##
<VirtualHost *:443>
DocumentRoot /var/www/html/dir1
ServerName host1.ourdomain.com
ServerAlias host1.ourdomain.com
ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn
SSLEngine on
# >>SSL Certificates Config ... Truncated
</VirtualHost>
<VirtualHost *:443>
DocumentRoot /var/www/html/dir2
ServerName ourdomain.com
ServerAlias ourdomain.com www.ourdomain.com
ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn
SSLEngine on
# >>SSL Certificates Config ... Truncated
</VirtualHost>
------------ End ssl.conf ------------------
Gdzie jest problem? Nie chciałbym się zgadzać z .htaccess, ponieważ chcę uniknąć wpływu AllowOverride All na naszą usługę host1.
Dzięki.
Oly
----- Dodano sekcję dotyczącą drugiego żądania netstat przez ngn
# netstat -ant | grep 80
tcp 0 0 :::80 :::* LISTEN
----- Dodano sekcję na prośbę lsof Hbruijna - jakiś pomysł?
# lsof -iTCP:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
httpd 24331 root 5u IPv6 5381394 0t0 TCP *:http (LISTEN)
httpd 24334 apache 5u IPv6 5381394 0t0 TCP *:http (LISTEN)
httpd 24335 apache 5u IPv6 5381394 0t0 TCP *:http (LISTEN)
httpd 24336 apache 5u IPv6 5381394 0t0 TCP *:http (LISTEN)
httpd 24337 apache 5u IPv6 5381394 0t0 TCP *:http (LISTEN)
httpd 24338 apache 5u IPv6 5381394 0t0 TCP *:http (LISTEN)
httpd 24339 apache 5u IPv6 5381394 0t0 TCP *:http (LISTEN)
httpd 24340 apache 5u IPv6 5381394 0t0 TCP *:http (LISTEN)
httpd 24341 apache 5u IPv6 5381394 0t0 TCP *:http (LISTEN)
httpd 25323 apache 5u IPv6 5381394 0t0 TCP *:http (LISTEN)
httpd 25325 apache 5u IPv6 5381394 0t0 TCP *:http (LISTEN)
httpd 25326 apache 5u IPv6 5381394 0t0 TCP *:http (LISTEN)
Nowy dodatek do tego problemu
Oto wyniki httpd -S, wszystkie wydają się OK z punktu widzenia httpd. Ale łączenie się z „http: //ourdomain.com” lub „http: //www.ourdomain.com” zatrzymuje się we wszystkich przeglądarkach ... Przepisywanie z https w ogóle nie działa.
wildcard NameVirtualHosts and _default_ servers:
*:80 is a NameVirtualHost
default server ourdomain.com (/etc/httpd/conf/httpd.conf:1032)
port 80 namevhost ourdomain.com (/etc/httpd/conf/httpd.conf:1032)
alias ourdomain.com
wild alias *.ourdomain.com
*:443 is a NameVirtualHost
default server host1.ourdomain.com (/etc/httpd/conf.d/ssl.conf:40)
port 443 namevhost host1.ourdomain.com (/etc/httpd/conf.d/ssl.conf:40)
alias host1.ourdomain.com
port 443 namevhost ourdomain.com (/etc/httpd/conf.d/ssl.conf:95)
alias ourdomain.com
alias www.ourdomain.com
Syntax OK
httpd.conf dla portu 80
<VirtualHost *:80>
ServerName ourdomain.com
ServerAlias ourdomain.com *.ourdomain.com
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>
netstat -n | grep 80
i sprawdzić, który proces używa portu?Address already in use: make_sock: could not bind to address [::]:80
wskazuje, że coś innego już nasłuchuje portu 80, na przykładsudo lsof -iTCP:80
Odpowiedzi:
W przypadku pierwszego problemu spróbuj ustawić
ServerAlias
zmienną tak, aby zawierała następujące elementy na wszystkich sekcjach hosta wirtualnego.Ref: http://httpd.apache.org/docs/2.4/mod/core.html#serveralias
Jak na błąd uruchamiania, wygląda na to, że poprzednie uruchomienie nie zostało poprawnie zamknięte, tzn. Dane wyjściowe netstat i lsof pokazują, że nadal działa i nasłuchuje na porcie 80. Przed próbą ponownego uruchomienia upewnij się, że httpd już nie działa, tzn. Powinieneś nie widzę żadnych danych wyjściowych dla httpd podczas uruchamiania
lsof -iTCP:80
źródło