nirolo
20.10.13, 16:50
Hallo,
mein Problem in Kürze:
Ich will meinen Webserver mit OwnCloud über das Internet erreichbar machen. Im LAN funktioniert es. Online noch nicht.
Ich habe einen nginx Webserver mit OwnCloud auf einem Raspberry Pi aufgesetzt. Auf dem Pi läuft das aktuelle Raspbian (Raspbian GNU/Linux 7 (wheezy)). Ich habe Iptables mit
* filter
:INPUT DROP [23:2584]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1161:105847]
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -s 192.168.11.6/24 -j ACCEPT
-A INPUT -s 192.168.11.1/32 -i tcp -p tcp -m tcp --dport 22 -j DROP
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
COMMIT
konfiguriert. In meinem Router (Buffalo - WHR-G300N - auf 192.168.11.1) sind die Ports 80 und 443 an den Pi (192.168.11.6) weitergeleitet. Ein kleiner Check hier: http://www.gwebtools.com/port-scanner sagt mir auch, dass diese beiden Ports offen sind (werden als geschlossen angezeigt, wenn ich die Weiterleitungsregeln im Router herausnehme).
Ich bin noch nicht wirklich vertraut mit Iptables und vermute, dass ich da noch etwas falsch mache, habe aber keine wirkliche Idee mehr im Moment. Wie oben beschrieben, funktioniert der Zugriff im LAN, aber nicht übers Internet. Die Nginx config sieht so aus:
server {
listen 80;
server_name 192.168.11.6;
return 301 https://$server_name$request_uri; # enforce https
}
server {
listen 443 ssl;
server_name 192.168.11.6;
ssl_certificate /etc/nginx/cert.pem;
ssl_certificate_key /etc/nginx/cert.key;
root /var/www/owncloud;
client_max_body_size 10G; # set max upload size
fastcgi_buffers 64 4K;
rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect;
rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect;
rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect;
index index.php;
error_page 403 /core/templates/403.php;
error_page 404 /core/templates/404.php;
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location ~ ^/(data|config|\.ht|db_structure\.xml|README) {
deny all;
}
location / {
# The following 2 rules are only needed with webfinger
rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;
rewrite ^/.well-known/carddav /remote.php/carddav/ redirect;
rewrite ^/.well-known/caldav /remote.php/caldav/ redirect;
rewrite ^(/core/doc/[^\/]+/)$ $1/index.html;
try_files $uri $uri/ index.php;
}
location ~ ^(.+?\.php)(/.*)?$ {
try_files $1 = 404;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$1;
fastcgi_param PATH_INFO $2;
fastcgi_param HTTPS on;
fastcgi_pass 127.0.0.1:9000;
# Or use unix-socket with 'fastcgi_pass unix:/var/run/php5-fpm.sock;'
}
# Optional: set long EXPIRES header on static assets
location ~* ^.+\.(jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ {
expires 30d;
# Optional: Don't log access to assets
access_log off;
}
}
Edit:
Wenn ich von einem Rechner im Lan per Browser auf die Internetadresse meines Routers zugreife, öffnet sich der Loginbereich für den Router. Von außerhalb (per Smartphone) öffnet sich gar keine Seite.
mein Problem in Kürze:
Ich will meinen Webserver mit OwnCloud über das Internet erreichbar machen. Im LAN funktioniert es. Online noch nicht.
Ich habe einen nginx Webserver mit OwnCloud auf einem Raspberry Pi aufgesetzt. Auf dem Pi läuft das aktuelle Raspbian (Raspbian GNU/Linux 7 (wheezy)). Ich habe Iptables mit
* filter
:INPUT DROP [23:2584]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1161:105847]
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -s 192.168.11.6/24 -j ACCEPT
-A INPUT -s 192.168.11.1/32 -i tcp -p tcp -m tcp --dport 22 -j DROP
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
COMMIT
konfiguriert. In meinem Router (Buffalo - WHR-G300N - auf 192.168.11.1) sind die Ports 80 und 443 an den Pi (192.168.11.6) weitergeleitet. Ein kleiner Check hier: http://www.gwebtools.com/port-scanner sagt mir auch, dass diese beiden Ports offen sind (werden als geschlossen angezeigt, wenn ich die Weiterleitungsregeln im Router herausnehme).
Ich bin noch nicht wirklich vertraut mit Iptables und vermute, dass ich da noch etwas falsch mache, habe aber keine wirkliche Idee mehr im Moment. Wie oben beschrieben, funktioniert der Zugriff im LAN, aber nicht übers Internet. Die Nginx config sieht so aus:
server {
listen 80;
server_name 192.168.11.6;
return 301 https://$server_name$request_uri; # enforce https
}
server {
listen 443 ssl;
server_name 192.168.11.6;
ssl_certificate /etc/nginx/cert.pem;
ssl_certificate_key /etc/nginx/cert.key;
root /var/www/owncloud;
client_max_body_size 10G; # set max upload size
fastcgi_buffers 64 4K;
rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect;
rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect;
rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect;
index index.php;
error_page 403 /core/templates/403.php;
error_page 404 /core/templates/404.php;
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location ~ ^/(data|config|\.ht|db_structure\.xml|README) {
deny all;
}
location / {
# The following 2 rules are only needed with webfinger
rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;
rewrite ^/.well-known/carddav /remote.php/carddav/ redirect;
rewrite ^/.well-known/caldav /remote.php/caldav/ redirect;
rewrite ^(/core/doc/[^\/]+/)$ $1/index.html;
try_files $uri $uri/ index.php;
}
location ~ ^(.+?\.php)(/.*)?$ {
try_files $1 = 404;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$1;
fastcgi_param PATH_INFO $2;
fastcgi_param HTTPS on;
fastcgi_pass 127.0.0.1:9000;
# Or use unix-socket with 'fastcgi_pass unix:/var/run/php5-fpm.sock;'
}
# Optional: set long EXPIRES header on static assets
location ~* ^.+\.(jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ {
expires 30d;
# Optional: Don't log access to assets
access_log off;
}
}
Edit:
Wenn ich von einem Rechner im Lan per Browser auf die Internetadresse meines Routers zugreife, öffnet sich der Loginbereich für den Router. Von außerhalb (per Smartphone) öffnet sich gar keine Seite.