PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Nginx Reverse Proxy -> Nginx Webserver



SiiK
22.08.2015, 07:03
Hallo,

Ich bin gerade am Planen einer neuen Serverstruktur und beschäftige mich grad mit dem Reverse von Nginx.
Grundsätzlich strebe ich folgende Lösung an.
Reverse Proxy Nginx -> auf Webserver Nginx.

Das Problem was aktuell entsteht ist, dass der Traffic der vom Reverse auf den Webserver kommen sollte einen 400 Bad Gateway Error erzeugt. Entweder bin ich zu dämlich oder da hats was anderes..??
Im Endeffekt will ich das die IP vom Webserver nicht öffentlich ersichtlich ist, nutze zwar Cloudflare aber die IP hinter dem originalen Webserver kann man ja leaken, deswegen diese Konstellation.

Kurz zusammen gefasst:
Ich will jeden Traffic was auf Port 80/443 kommt über den Reverse auf meinem Webserver auf Port X ankommt(PHP,CSS etc. wird alles erst auf dem Webserver geladen)
Die Lösung nginx reverse -> apache2 funktioniert, jedoch will ich den apache2 aus technischen Gründen nicht nutzen, d.h. ich habe hier nginx geforwared auf nginx.
Nginx Webserver Config:

server {

listen 7894 ;
server__name srv1.domain.com;

root /var/www/public_html;

index index.html index.htm index.php;

charset utf-8;

location / {
try_files $uri $uri/ /index.php?$query_string;
}

location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }

access_log off;
error_log /var/log/nginx/error.log error;

sendfile off;

client_max_body_size 100m;

location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;

fastcgi_pass unix:/var/run/php5-fpm.sock;

fastcgi_index index.php;

include fastcgi_params;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

fastcgi_intercept_errors off;

fastcgi_buffer_size 16k;

fastcgi_buffers 4 16k;
}

location ~ /\.ht {
deny all;
}



Nginx Reverse Config:

server {

listen 80;

listen 443 ssl;

server_name domain.com;

root /var/www/public_html;

index index.html index.htm index.php;

error_log /var/log/nginx/error.log;

charset utf-8;

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://webserveripaddress:7894;

}

location ~ /\.ht {
deny all;
}

####SSL####
ssl_certificate /etc/ssl/domain.crt;
ssl_certificate_key /etc/ssl/domain.key;

}


Vielen Dank für Eure Hilfe!

schneewittchen
22.08.2015, 07:15
hi, probier das mal

nginx.conf


user www-data;
worker_processes 8;

error_log /var/log/nginx/error.log warn;
pid /run/nginx.pid;

events {
worker_connections 1024;
multi_accept off;
use epoll;
}

http {
access_log off;
client_max_body_size 100m;
client_body_buffer_size 128k;
client_header_buffer_size 2k;
large_client_header_buffers 4 128k;

client_header_timeout 12;
client_body_timeout 12;

keepalive_timeout 15;
send_timeout 10;

reset_timedout_connection on;

sendfile on;
tcp_nopush on;
tcp_nodelay on;
server_tokens off;

server_names_hash_bucket_size 64;
types_hash_max_size 2048;

include /etc/nginx/mime.types;
default_type application/octet-stream;

log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

gzip on;
gzip_vary on;
gzip_proxied any;
gzip_disable "MSIE [1-6]\.";
gzip_min_length 0;
gzip_comp_level 1;
gzip_buffers 16 8k;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript text/x-js;

include /etc/nginx/sites-enabled/*;
}





server {
listen 80;
listen 443 ssl spdy;

ssl_certificate /etc/nginx/ssl-certs/XXXX.crt;
ssl_certificate_key /etc/nginx/ssl-certs/XXXX.key;

ssl_session_timeout 10m;
ssl_session_cache shared:SSL:10m;

ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES25 6:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;

ssl_prefer_server_ciphers on;
ssl_dhparam /etc/nginx/ssl-certs/dh2048.pem;

add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection '1; mode=block';

server_name example.com www.example.com;
root /usr/share/nginx/htdocs;

access_log off;
error_log /var/log/nginx/example.com_error.log warn;

location / {
try_files $uri $uri/ @proxy;
}

location @proxy {
proxy_buffers 64 32k;
proxy_buffer_size 64k;

#timeouts settings
proxy_connect_timeout 159s;
proxy_send_timeout 600;
proxy_read_timeout 600;

proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_pass http://ipadresse:port;
}
}


so habe ich es und es läuft :-)

SiiK
22.08.2015, 08:52
Hi,

Danke schon mal!!
Ich bekomme leider noch immer den 400 Fehler.
Kannst du mir ggf. noch einen Auszug aus der nginx.conf bzw. des vhosts am Ziel Server zu kommen lassen? Gerne auch per PM.

Dachte eher zuerst das mir da die FW einen Strich durch die Rechnung macht, aber auch wen ich die Rules auf allow - all setze kommt der Error, laut Chrome werden die Header aber richtig gesendet, d.h ich vermute das es ggf am Ziel Webserver iwo liegen wird, das dieser den Header nicht verarbeiten kann.

Herzlichen Dank!

schneewittchen
22.08.2015, 10:03
Hast PM

gruß

SiiK
22.08.2015, 10:20
Kann geschlossen werden, läuft!