Reverse Proxy mit nginx und Apache Backend – CentOS 7

Reverse Proxy mit nginx und Apache Backend ist die beliebteste Konfiguration für High Performance Webserver mit maximale Kompatibilität.
Diese Anleitung wurde zuletzt unter CentOS 7.4 mit SELINUX=enforcing getestet.

1. Vorbereitungen

Nginx kann vom EPEL-Repository installiert werden. Alternativ kann man von nginx.org downloaden, um die neuesten Version zu testen.

# System update
yum update -y

# EPEL Repository
yum install epel-release -y

Bitte stellen Sie sicher, dass Port 80 für diese Anleitung offen ist:

# IPV4 - Check mit
iptables -n -L -v
# IPV6 - Check mit
ip6tables -n -L -v 

2. NGINX Installation:

#  Installation von nginx
yum install nginx -y

# Autostart von nginx nach Reboot
systemctl enable nginx
systemctl start nginx

3. NGINX Default Virtualserver:

Es ist gängige Praxis, die virtuelle Webserver in /etc/nginx/conf.d/ zu konfigurieren.

# nano /etc/nginx/conf.d/default.conf
server {
        listen   80;

        root /var/www/html/;
        index index.php index.html index.htm;

        server_name _;

        location / {
                try_files $uri $uri/ /index.php;
        }
	location ~ \.php$ {
                proxy_set_header X-Real-IP  $remote_addr;
                proxy_set_header X-Forwarded-For $remote_addr;
                proxy_set_header Host $host;
                proxy_pass http://127.0.0.1:8080;
         }
         location ~ /\.ht {
                deny all;
        }
}

3a. Default Virtual Server Löschen

Bitte Editieren Sie /etc/nginx/nginx.conf und kommentieren den Sever-Block aus, diesen haben wir bereits im vorherigen Schritt definiert.

#server {
#	listen       80 default_server;
#       listen       [::]:80 default_server;
#      server_name  _;
#       root         /usr/share/nginx/html;

#        # Load configuration files for the default server block.
#        include /etc/nginx/default.d/*.conf;

#        location / {
#        }

#	error_page 404 /404.html;
#            location = /40x.html {
#        }

#	error_page 500 502 503 504 /50x.html;
#           location = /50x.html {
#        }
#   }

4. Apache Installation

yum install httpd
systemctl enable httpd

5. Apache Konfiguration

nano /etc/httpd/conf/httpd.conf

Suchen Sie die Zeile mit Listen und ändern Sie diese wir folgt.

Listen 127.0.0.1:8080

5. PHP Installation

yum install php

6. PHP-Testskript

# nano /var/www/html/info.php 
< ?php phpinfo(); ?> // Bitte Leerzeichen vor ?php löschen!

7. Server Neu Starten

systemctl restart httpd
systemctl restart nginx

8. Webseite aufrufen

Rufen Sie http://host-ip-or-hostname/info.php im Browser, dann bekommen Sie die Fehlermedlung "502 Bad Gateway". Nur noch eine SELinux-kleinigkeit, dann darf Nginx mit Apache kommunizieren:

setsebool -P httpd_can_network_connect on

Dann sollten Sie die PHP-Infos wie im folgenden Bild im Browser sehen:

Bei Fragen oder technischen Probleme kontakieren Sie uns bitte, unabhängig vom Kundenstatus unterstützen wir Sie gern.