PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : nginx Konfiguration



ashcr@ck
06.03.2012, 09:08
Hey @ all

ich habe auf einem Ubuntu Server nginx laufen. Diesen möchte ich nun als Reverse Proxy nutzen. Soweit habe ich ihn auch konfiguriert. Bei einem Restart von nginx wird der Test als erfolgreich angezeigt. Doch wenn ich dann an meinem PC im Browser die URL eingebe werde ich nicht auf die Adresse weitergeleitet. Leider bin ich noch sehr unerfahren was Serveradministration angeht.

Hier mal die .conf Datein.


nginx.conf (Standard Konfig)


user www-data;
worker_processes 1;

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

events {
worker_connections 1024;
# multi_accept on;
}

http {
include /etc/nginx/mime.types;

access_log /var/log/nginx/access.log;

sendfile on;
#tcp_nopush on;

#keepalive_timeout 0;
keepalive_timeout 65;
tcp_nodelay on;

gzip on;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";

include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}

# mail {
# # See sample authentication script at:
# # http://wiki.nginx.org/NginxImapAuthenticateWithApachePhpScript
#
# # auth_http localhost/auth.php;
# # pop3_capabilities "TOP" "USER";
# # imap_capabilities "IMAP4rev1" "UIDPLUS";
#
# server {
# listen localhost:110;
# protocol pop3;
# proxy on;
# }
#
# server {
# listen localhost:143;
# protocol imap;
# proxy on;
# }
# }
~



conf.d/proxy.conf


proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_max_temp_file_size 0;

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;



sites-enabled/default

# You may add here your
# server {
# ...
# }
# statements for each of your virtual hosts

server {
listen 88;
server_name test;
rewrite ^/(.*) http://test.de permanent;




access_log /var/log/nginx/localhost.access.log;

location /blog {
proxy_pass http://blog.test.de;
proxy_redirect default;
}

location /forum {
proxy_pass http://forum.test.de;
proxy_redirect default;
}

# location /doc {
# root /usr/share;
# autoindex on;
# allow 127.0.0.1;
# deny all;
# }

# location /images {
# root /usr/share;
# autoindex on;
# }

#error_page 404 /404.html;

# redirect server error pages to the static page /50x.html
#
#error_page 500 502 503 504 /50x.html;
#location = /50x.html {
# root /var/www/nginx-default;
#}

# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
#proxy_pass http://127.0.0.1;
#}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
#fastcgi_pass 127.0.0.1:9000;
#fastcgi_index index.php;
#fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
#includefastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
#deny all;
#}
}


# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
#listen 8000;
#listen somename:8080;
#server_name somename alias another.alias;

#location / {
#root html;
#index index.html index.htm;
#}
#}


# HTTPS server
#
#server {
#listen 443;
#server_name localhost;

#ssl on;
#ssl_certificate cert.pem;
#ssl_certificate_key cert.key;

#ssl_session_timeout 5m;

#ssl_protocols SSLv2 SSLv3 TLSv1;
#ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSL v2:+EXP;
#ssl_prefer_server_ciphers on;

#location / {
#root html;
#index index.html index.htm;
#}
#}




Ich wollte jetzt über den Browser bzw einen Client die beiden unterschiedlichen Seiten ansteuern indem ich test.de aufrufe. Differenziert wird später im Login Bereich und in den Zertifikaten welcher User auf welchen Bereich zugreifen darf. Zunächst möchte ich erst einmal die richtige Funktionsweise testen. Muss ich da noch weitere Konfigurationen vornehmen?? Der Nächste Schritt wäre dann die Verbindung vom Browser/Client zum Reverse Proxy per SSL zu verschlüsseln.

H4x0r007
06.03.2012, 11:56
Ich weiß nicht, ob das Absicht ist, oder ein Versehen:
In der sites-enabled/default steht

listen 88;D.h. du müsstest test.de:88 aufrufen, da der Webserver auf Port 88 statt auf Port 80 hört.

Als server-name in der sites-enabled/default solltest du den FQDN eintragen, also test.de. Ich trage server_name immer so ein:


server_name example.org *.example.orgDamit sind alle Subdomains auch abgedeckt.

Was willst du mit der Rewrite-Zeile eigentlich erreichen? Du leitest Alles, was hinter test.de/ kommt, wieder zurück an test.de. Dann kannst du aber /blog, /forum usw. nie erreichen.
Kommentiere die Zeile testweise mal aus.

feVer
06.03.2012, 13:25
Habe mich selbst noch nicht mit Reverse Proxys beschäftigt, aber mal diese Seite abgespeichert um sie später zu lesen: http://www.leetperium.de/2012/01/nginx-als-reverse-proxy-einrichten/

Vielleicht hilft dir das ja.

ashcr@ck
06.03.2012, 13:46
Danke euch beiden schonmal für die Antwort. Ich werde es später mal ändern.


Habe mich selbst noch nicht mit Reverse Proxys beschäftigt, aber mal diese Seite abgespeichert um sie später zu lesen: http://www.leetperium.de/2012/01/nginx-als-reverse-proxy-einrichten/

Die Seite habe ich schon gelesen und auch damit gearbeitet. ;)



Ich weiß nicht, ob das Absicht ist, oder ein Versehen:
In der sites-enabled/default steht
Code:
listen 88;
D.h. du müsstest test.de:88 aufrufen, da der Webserver auf Port 88 statt auf Port 80 hört.Das ist so gewollt, dass der Server auf Port 88 hört, da Port 80 schon belegt ist.



Als server-name in der sites-enabled/default solltest du den FQDN eintragen, also test.de. Ich trage server_name immer so ein:

Code:
server_name example.org *.example.org
Damit sind alle Subdomains auch abgedeckt.

Was willst du mit der Rewrite-Zeile eigentlich erreichen? Du leitest Alles, was hinter test.de/ kommt, wieder zurück an test.de. Dann kannst du aber /blog, /forum usw. nie erreichen.
Kommentiere die Zeile testweise mal aus. Danke für den Tipp mit dem FQDN. Das werde ich später mal ändern und dann hierein editieren, ob es geklappt hat.


Bei der Rewrite Zeile war ich mir auch nicht sicher, ich hatte es nur irgendwo gelesen und einfach mal mit eingetragen, ohne mich schlau zu machen, was dieser Befehl macht. Werde ich wieder rausnehmen.


EDIT:
Problem gelöst. :)

ashcr@ck
13.03.2012, 13:35
Ich habe jetzt doch nochmal eine Frage. Ich habe soweit alles eingerichtet. Es läuft auch über SSL. Allerdings klappt beim Routing was nicht. Wenn ich https://test.de/blog eingebe werd ich auf die Forumsseite geleitet.

Hier nochmal die sites-enabled/default


server {
listen 443;
server_name test.de *.test.de;

access_log /var/log/nginx/domain.test.de.log;
error_log /var/log/nginx/error.domain.test.de.log;

ssl on;
ssl_certificate conf.d/ssl/test.de.crt;
ssl_certificate_key conf.d/ssl/test.de.key;
ssl_session_timeout 5m;

ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
ssl_verify_client off;

location / {
}

location /blog {
proxy_pass http://blog.test.de:88/;
proxy_redirect off;
}

location /forum {
proxy_pass http://forum.test.de:88/;
proxy_redirect off;
}

}


Dann wollt ich gerne in der Main Location ein .php File einbinden. Leider weiß ich nicht so genau wie das geht. Das .php Script ist ein einfacher Login. Mit diesem soll zwischen den beiden Bereichen (Forum, Blog) unterschieden werden, so dass die User nicht zu beiden Bereichen geleitet werden können.

ashcr@ck
12.05.2012, 08:47
Ich habe da nochmal eine Frage zum nginx Reverse Proxy.

Wenn ich diesen mit SSL konfiguriere wird die Verbindung vom Client zum reverse Proxy verschlüsselt. Gilt dies auch für die Verbindung vom Proxy zum Server oder muss diese zusätzlich konfiguriert werden?!