Ich habe einen Server, auf dem sowohl Nginx als auch Apache in einem Proxy-Setup ausgeführt werden. Nginx liefert den statischen Inhalt und Apache den dynamischen Inhalt, der wirklich gut funktioniert.
Dieses Setup hostet derzeit zwei Versionen derselben Site. Nennen wir sie Production.com und Staging.com.
Ich habe gerade die Einrichtung der Website product.com mit SSL abgeschlossen, was ebenfalls sehr gut funktioniert, aber festgestellt, dass mir der Inhalt des Webstamms von Production.com bereitgestellt wird, wenn ich auch mit SSL zu staging.com navigiere , was offensichtlich falsch ist.
Mir wurde gesagt, dass ich einen Standardhandler sowohl für SSL als auch für Nicht-SSL verwenden soll, um dieses Verhalten zu beseitigen, aber hier habe ich Probleme.
Im Moment habe ich diese Konfiguration in nginx.conf enthalten
default_80.confserver {
listen 80;
server_name "";
return 444;
}
default_443.conf
server {
listen 443 default_server ssl;
server_name "";
return 444;
}
staging.com.conf
server {
listen 80;
server_name staging.com;
access_log /var/log/nginx/staging.com.log;
# static content folders
location ^~ /(images|css|js) {
root /var/www/staging.com/current;
access_log /var/log/nginx/staging.com.static.log;
}
# static content files
location ~* \.(js|css|rdf|xml|ico|txt|jpg|gif|png|jpeg)$ {
root /var/www/staging.com/current;
access_log /var/log/nginx/staging.com.static.log;
}
# proxy the rest to apache
location / {
proxy_pass http://127.0.0.1:8080/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
}
Production.com.conf
server {
listen 80;
server_name production.com;
rewrite ^ https://$server_name$request_uri? permanent;
}
server {
listen 443 ssl;
server_name production.com;
access_log /var/log/nginx/production.com.log;
ssl_certificate /etc/httpd/conf.d/SSL/ev.crt;
ssl_certificate_key /etc/httpd/conf.d/SSL/server.key;
keepalive_timeout 60;
# static content folders
location ^~ /(images|css|js) {
root /var/www/production.com/current;
access_log /var/log/nginx/production.com.static.log;
}
# static content files
location ~* \.(js|css|rdf|xml|ico|txt|jpg|gif|png|jpeg)$ {
root /var/www/production.com/current;
access_log /var/log/nginx/production.com.static.log;
}
# proxy the rest to apache
location / {
# proxy settings
proxy_pass http://127.0.0.1:8080/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
}
Diese Einstellung beendet alle Arten von SSL-Zugriff auf eine der beiden Sites. Wenn ich die Direktive "default_server" aus der default_443.conf entferne, funktioniert sie stattdessen für beide Sites.
Es stellt sich also die Frage, wie ich den SSL-Zugriff ( https://staging.com gibt 444 zurück) für staging.com deaktivieren und auf Production.com aktivieren kann.
Mit freundlichen Grüßen Lars