WebarchivCZ / Seeder

Seeder - Czech webarchive curating tool and public site
MIT License
15 stars 2 forks source link

Seeder a www za reverzní proxy #424

Closed westfood closed 7 years ago

westfood commented 7 years ago

čéšť,

mám trabl s kterým bych potřeboval poradit.

tohle fachá: http://www-dev.webarchiv.cz/ tohle je čudné: http://seeder.webarchiv.cz/

přičemž tohle fachá (ale to už neuvidíš, páč je to za VPN): http://10.3.0.60/seeder/

nenapadá tě něco? možná by stačilo uwsgi řici ať seeder běží na třeba na portu 10000, www na portu 10001 a pak by s tím nebyl problém..

ale kdo ví..

sentry vyhodil tohle: http://sentry.webarchiv.cz/sentry/seeder/issues/98/

v apači mám tohle :

<VirtualHost *:80>
 ServerAdmin rudolf.kreibich@nkp.cz
 ServerName seeder.webarchiv.cz

 ProxyPass         / http://10.3.0.60/seeder/
 ProxyPassReverse  / http://10.3.0.60/seeder/
</VirtualHost>

<VirtualHost *:80>
 ServerAdmin rudolf.kreibich@nkp.cz
 ServerName www-dev.webarchiv.cz

 ProxyPass         / http://10.3.0.60/
 ProxyPassReverse  / http://10.3.0.60/
</VirtualHost>
Visgean commented 7 years ago

OK, ono oboje facha, jenom na tom jednom serveru to nenacte static files css atp. Django v debug mode servuje i ty staticke soubory. Ale na production je potreba to nastavit aby to bezelo pres nginx primo. To je kvuli performance a security.

Musis tedy nastavit static podobne jako je to tady: https://github.com/WebarchivCZ/Seeder/blob/master/installation_templates/template.nginx.conf

westfood commented 7 years ago

hele, ten 10.3.0.60 je nastavený správně, servíruje statickej obsah.. reverzní proxy by mělo stačit jen odkázat na ten nginx ne?

server {
    listen       80;
    listen       443 ssl;
    ssl_certificate      /etc/nginx/nginx-10.3.0.60.crt;
    ssl_certificate_key  /etc/nginx/nginx-10.3.0.60.key;
    server_name  10.3.0.60;

    location / {
        uwsgi_pass  unix:///opt/Seeder/seeder.sock;
        include uwsgi_params;
    }

    location /media {
        root /opt/Seeder/Seeder;
    }

    location /robots.txt {
        alias /usr/share/nginx/html/robots.txt;
    }

    location /static {
        alias /opt/Seeder/Seeder/static_root;
    }
}
westfood commented 7 years ago
 rudolf@m2117  ~  curl -vL 10.3.0.60
* Rebuilt URL to: 10.3.0.60/
*   Trying 10.3.0.60...
* TCP_NODELAY set
* Connected to 10.3.0.60 (10.3.0.60) port 80 (#0)
> GET / HTTP/1.1
> Host: 10.3.0.60
> User-Agent: curl/7.54.0
> Accept: */*
>
< HTTP/1.1 302 Found
< Server: nginx/1.10.2
< Date: Mon, 14 Aug 2017 09:45:07 GMT
< Content-Type: text/html; charset=utf-8
< Transfer-Encoding: chunked
< Connection: keep-alive
< Vary: Cookie
< X-Frame-Options: SAMEORIGIN
< Location: /en/
<
* Ignoring the response-body
* Connection #0 to host 10.3.0.60 left intact
* Issue another request to this URL: 'http://10.3.0.60/en/'
* Found bundle for host 10.3.0.60: 0x7fde5040bc40 [can pipeline]
* Re-using existing connection! (#0) with host 10.3.0.60
* Connected to 10.3.0.60 (10.3.0.60) port 80 (#0)
> GET /en/ HTTP/1.1
> Host: 10.3.0.60
> User-Agent: curl/7.54.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Server: nginx/1.10.2
< Date: Mon, 14 Aug 2017 09:45:07 GMT
< Content-Type: text/html; charset=utf-8
< Transfer-Encoding: chunked
< Connection: keep-alive
< Content-Language: en
< X-Frame-Options: SAMEORIGIN
<

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="author" content="Webarchiv">
    <title>The Museum of Czech web | Webarchiv.cz</title>
...

versus:

 rudolf@m2117  ~  curl -vL seeder.webarchiv.cz
* Rebuilt URL to: seeder.webarchiv.cz/
*   Trying 195.113.132.93...
* TCP_NODELAY set
* Connected to seeder.webarchiv.cz (195.113.132.93) port 80 (#0)
> GET / HTTP/1.1
> Host: seeder.webarchiv.cz
> User-Agent: curl/7.54.0
> Accept: */*
>
< HTTP/1.1 302 Found
< Date: Mon, 14 Aug 2017 09:46:15 GMT
< Server: nginx/1.10.2
< Content-Type: text/html; charset=utf-8
< Vary: Accept-Language,Cookie
< Content-Language: en
< X-Frame-Options: SAMEORIGIN
< Location: /auth/login/?next=/seeder/
< Content-Length: 0
< X-Pad: avoid browser bug
<
* Connection #0 to host seeder.webarchiv.cz left intact
* Issue another request to this URL: 'http://seeder.webarchiv.cz/auth/login/?next=/seeder/'
* Found bundle for host seeder.webarchiv.cz: 0x7fa7d17010b0 [can pipeline]
* Re-using existing connection! (#0) with host seeder.webarchiv.cz
* Connected to seeder.webarchiv.cz (195.113.132.93) port 80 (#0)
> GET /auth/login/?next=/seeder/ HTTP/1.1
> Host: seeder.webarchiv.cz
> User-Agent: curl/7.54.0
> Accept: */*
>
< HTTP/1.1 404 Not Found
< Date: Mon, 14 Aug 2017 09:46:15 GMT
< Server: nginx/1.10.2
< Content-Type: text/html; charset=utf-8
< Content-Language: en
< X-Frame-Options: SAMEORIGIN
< Vary: Accept-Language,Cookie
< Transfer-Encoding: chunked
<

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="author" content="Webarchiv">
    <title>404: Page not found | Webarchiv.cz</title>
Visgean commented 7 years ago

:( V tom se moc nevyznam.

Ale nebude treba chyba v server_name?

server_name  10.3.0.60;
Visgean commented 7 years ago

Tam by imho mela byt domena. Taky je dulezite aby z te reverse proxy chodili ty requests s originalni hlavickou - aby meli stejnou domenu

westfood commented 7 years ago

asi už na to přicházím:

apache si říká o: /seeder/auth/login/?next=/seeder/ ale měl by si říkat o: /auth/login/?next=/seeder/ proto háže NGINX apachovi 404..

westfood commented 7 years ago

tj.. jestli chápu tu appku správně..

požádám ji o seeder.nekde.cz/seeder/ a ona mě přesměruje na seeder.nekde.cz/auth/login/?next=/seeder/ takže bych měl upravit apache tak, aby ořezával další dotazy o ten seeder?

hele, radši bych třeba www a seeder provozoval na jiných portech..

Visgean commented 7 years ago

Hmm hele ja to vidim takhle: to co to potrebujete je aby k admnistraci (seederu) byl pristup z virtualni site, right? Separace sluzeb pres url asi funguje, ale nemam s tim uplne zkusenosti, lepsi je to delat podle subdomeny.

Ja bych tam dal dve sluzby do nginxu:

westfood commented 7 years ago

Mám seeder.webarchiv.cz a seeder-dev.webarchiv.cz pro seeder rozhraní

webarchiv.cz a www-dev.webarchiv.cz pro www.

tj. Produkční i vývojové rozhraní je oddělené. Vše běží ve své subdoméně. A vše pod veřejnou IP, vše bude https. Teď na apache, poté nginx.

Co je trabl, že servíruješ www pod / a seeder pod /seeder, ale jen přesměrováním. Tj, reverzní proxy je 1:1 vůči /, ale tím jak /seeder přesměruje na /auth, tak reverzní proxy nemá šanci vědět URL na který má směřovat požadavky, ty budou končit na www rozhraní a né v seederu.

Tj. na backendovém serveru bude ideální, když jedna služba bude v nginxu 10.3.0.60:80 a druhá třeba 10.3.0.60:81. Reverzní proxy na frontě dnu pak ví, že má hodit www na 80 a seeder na 81.. Případně přes location /www,/seeder.. Namíchat / pro www a /seeder pro seeder imho nepůjde.

po 14. 8. 2017 v 19:57 odesílatel Visgean Skeloru notifications@github.com napsal:

Hmm hele ja to vidim takhle: to co to potrebujete je aby k admnistraci (seederu) byl pristup z virtualni site, right? Separace sluzeb pres url asi funguje, ale nemam s tim uplne zkusenosti, lepsi je to delat podle subdomeny.

Ja bych tam dal dve sluzby do nginxu:

  • Jedna by servovala obsah pro verejne navstevniky, tam by jsi v nginxu pres location configurator zakazal url "/admin" a "/seeder".
  • Druha by byla pristupna pouze z site, to bych udelal tak ze by servername bylo neco jako "seeder.webarchiv.cz" a tam povolit jenom vase ip. Nebo neco takoveho.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/WebarchivCZ/Seeder/issues/424#issuecomment-322261978, or mute the thread https://github.com/notifications/unsubscribe-auth/AATQLC32_dn4T3p6NKXZG-sDofAFrWRkks5sYIqagaJpZM4O1HOT .

Visgean commented 7 years ago

No ja bych rozhodne nemichal lokace. Ja moc nerozumim ceho chces docilit. Dulezite je aby se z www nedalo dostat do administrace. To co ty resis je aby z jedne sudomeny slo pristupovat rovnou k obsahu co je na /seeder/? To imho nepujde bez meho zasahu, imho to ale dost zeslozituje pak ten projekt.

westfood commented 7 years ago

jj, o to mi šlo:

aby seeder.webarchiv.cz byl jen seeder a webarchiv.cz byla jen www prezentace.

teď je takové čudné..

celej seeder běží pod /seeder, ale jen během autentifkace běží pod: /auth/login/?next=/seeder/ namísto z /seeder/auth/login/?next=/seeder/ .. Kdyby i autentifikace byla pod /seeder - tak je to celý konzistentní.. a můžu to snadno volat z reverní proxy a mít to na oddělených poddoménách..

Visgean commented 7 years ago

Hmm ok. To asi muzu zaridit.

On Tue, 15 Aug 2017, 01:17 Rudolf, notifications@github.com wrote:

jj, o to mi šlo:

aby seeder.webarchiv.cz byl jen seeder a webarchiv.cz byla jen www prezentace.

teď je takové čudné..

celej seeder běží pod /seeder, ale jen během autentifkace běží pod: /auth/login/?next=/seeder/ namísto z /seeder/auth/login/?next=/seeder/ .. Kdyby i autentifikace byla pod /seeder - tak je to celý konzistentní.. a můžu to snadno volat z reverní proxy a mít to na oddělených poddoménách..

— You are receiving this because you were assigned.

Reply to this email directly, view it on GitHub https://github.com/WebarchivCZ/Seeder/issues/424#issuecomment-322335604, or mute the thread https://github.com/notifications/unsubscribe-auth/AAL1KM2nMiFdbeFdSoY3-eLOlf06VjmKks5sYNWggaJpZM4O1HOT .

westfood commented 7 years ago

díkes!

westfood commented 7 years ago

Hele, ještě jeden trabl.. Myslím, že je to prostě čudné, není to za žádnou proxy, ale nginx prostě nenaservíruje /seeder/ a hodí 404:

tyhle url jsou v pohodě: http://10.3.0.60/seeder/blacklists/ ale /seeder nepošle nic, takže nefunguje po přihlášení dashboard..

viz.

 rudolf@kim  ~/Movies/Vuze Downloads  curl -I 10.3.0.60/seeder/
HTTP/1.1 404 Not Found
Server: nginx/1.10.2
Date: Wed, 13 Sep 2017 13:38:13 GMT
Content-Type: text/html; charset=utf-8
Connection: keep-alive
X-Frame-Options: SAMEORIGIN
Content-Language: en
Vary: Accept-Language, Cookie

 rudolf@kim  ~/Movies/Vuze Downloads  curl -I 10.3.0.60/seeder
HTTP/1.1 404 Not Found
Server: nginx/1.10.2
Date: Wed, 13 Sep 2017 13:38:16 GMT
Content-Type: text/html; charset=utf-8
Connection: keep-alive
X-Frame-Options: SAMEORIGIN
Content-Language: en
Vary: Accept-Language, Cookie

ať nginx nastavím takhle:

server {
    listen       80;
    server_name  localhost 127.0.0.1 10.3.0.60 seeder.webarchiv.cz www.webarchiv.cz webarchiv.cz app.webarchiv.cz;
    location / {
        uwsgi_pass  unix:///opt/Seeder/seeder.sock;
        include uwsgi_params;
    }

    location /media {
        root /opt/Seeder/Seeder;
    }

    location /robots.txt {
        alias /usr/share/nginx/html/robots.txt;
    }

    location /static {
        alias /opt/Seeder/Seeder/static_root;
    }
}

nebo třeba podle template:

server {
    listen       80;
    server_name  localhost 127.0.0.1 10.3.0.60 seeder.webarchiv.cz www.webarchiv.cz webarchiv.cz;
    return       301 http://app.webarchiv.cz$request_uri;
    }

server {
    listen 80;
    server_name app.webarchiv.cz;

    location / {
        uwsgi_pass  unix:///opt/Seeder/seeder.sock;
        include uwsgi_params;
    }
...
westfood commented 7 years ago

z venku uvidíš tohle a to fachá https://app.webarchiv.cz/seeder/blacklists/

ale tohle neběží vůbec: https://app.webarchiv.cz/seeder/

na backendu se objeví tohle, ale měl by imho najet dashboard:

10.5.1.133 - - [13/Sep/2017:15:50:31 +0200] "GET /seeder/ HTTP/1.0" 404 5899 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/603.3.8 (KHTML, like Gecko) Version/10.1.2 Safari/603.3.8" "195.113.132.25"
Visgean commented 7 years ago

Ok ted jsem pushnul fix

westfood commented 7 years ago

hele, furt to vrací 404:


 rudolf@kim  ~/Movies/Vuze Downloads  curl -I 10.3.0.60/seeder
HTTP/1.1 404 Not Found
Server: nginx/1.10.2
Date: Wed, 13 Sep 2017 15:33:29 GMT
Content-Type: text/html; charset=utf-8
Connection: keep-alive
Vary: Accept-Language, Cookie
Content-Language: en
X-Frame-Options: SAMEORIGIN

 rudolf@kim  ~/Movies/Vuze Downloads  curl -I 10.3.0.60/seeder/
HTTP/1.1 404 Not Found
Server: nginx/1.10.2
Date: Wed, 13 Sep 2017 15:33:31 GMT
Content-Type: text/html; charset=utf-8
Connection: keep-alive
Vary: Accept-Language, Cookie
Content-Language: en
X-Frame-Options: SAMEORIGIN
Visgean commented 7 years ago

tak to musi byt chyba v nginx konfiguraci nebo tak neco.

westfood commented 7 years ago

seš si jistej?

když použiji uwsgi jako http server, tak stejnej výsledek:

[root@wa-app00]~# curl -I 127.0.0.1:10000/seeder/
HTTP/1.1 404 Not Found
Content-Type: text/html; charset=utf-8
X-Frame-Options: SAMEORIGIN
Content-Language: en
Vary: Accept-Language, Cookie

[root@wa-app00]~# curl -I 127.0.0.1:10000/seeder
HTTP/1.1 404 Not Found
Content-Type: text/html; charset=utf-8
X-Frame-Options: SAMEORIGIN
Content-Language: en
Vary: Accept-Language, Cookie

[root@wa-app00]~#
[uwsgi]
virtualenv      = /opt/virtualenv/seeder
pythonpath      = /opt/Seeder/Seeder
plugins         = python3
master          = 1
pidfile         = /opt/Seeder/seeder.pid
touch-reload    = /opt/Seeder/reload.touch
http-socket     = 0.0.0.0:10000
chmod-socket    = 777
cheaper-algo    = spare
cheaper         = 2
cheaper-initial = 2
cheaper-step    = 1
processes       = 6
vacuum          = 1
harakiri        = 60
wsgi-file       = /opt/Seeder/Seeder/wsgi.py
env             = PATH=/opt/rh/rh-python35/root/usr/bin:/sbin:/bin:/usr/sbin:/usr/bin
env             = LD_LIBRARY_PATH=/opt/rh/rh-python35/root/usr/lib64
env             = XDG_DATA_DIRS=/opt/rh/rh-python35/root/usr/share:/usr/local/share:/usr/share
env             = PKG_CONFIG_PATH=/opt/rh/rh-python35/root/usr/lib64/pkgconfig
westfood commented 7 years ago
[root@wa-app00]~# cat /opt/Seeder/Seeder/settings/local_settings.py
from .base import *

SECRET_KEY = 'sdfvsdfvsdfvsdfv'

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False
TEMPLATE_DEBUG = False
THUMBNAIL_DEBUG = False

ALLOWED_HOSTS = ['127.0.0.1', 'localhost', '10.3.0.60', 'seeder.webarchiv.cz', 'app.webarchiv.cz', 'www.webarchiv.cz', 'webarchiv.cz']
Visgean commented 7 years ago

A nasadil jsi novou verzi?

On Wed, 13 Sep 2017, 17:23 Rudolf notifications@github.com wrote:

[root@wa-app00]~# cat /opt/Seeder/Seeder/settings/local_settings.py from .base import *

SECRET_KEY = 'sdfvsdfvsdfvsdfv'

SECURITY WARNING: don't run with debug turned on in production!

DEBUG = False TEMPLATE_DEBUG = False THUMBNAIL_DEBUG = False

ALLOWED_HOSTS = ['127.0.0.1', 'localhost', '10.3.0.60', 'seeder.webarchiv.cz', 'app.webarchiv.cz', 'www.webarchiv.cz', 'webarchiv.cz']

— You are receiving this because you modified the open/close state.

Reply to this email directly, view it on GitHub https://github.com/WebarchivCZ/Seeder/issues/424#issuecomment-329221421, or mute the thread https://github.com/notifications/unsubscribe-auth/AAL1KKf5hRe9DK4zbVhSDjTsyo9nEcsBks5siAFzgaJpZM4O1HOT .

westfood commented 7 years ago
commit 1e89421a47763656401dad51c6757b22560b6380
Merge: 4f7d841 90592ac
Author: Visgean Skeloru <me@visgean.me>
Date:   Wed Sep 13 16:24:54 2017 +0100

    Merge remote-tracking branch 'origin/master' into production
Visgean commented 7 years ago

Me to na locale funguje. Moc netusim co by mohlo byt spatne. :(

westfood commented 7 years ago

to je čudné, takže když se poptáš kontejneru na /seeder - vrátí 200, namísto 404?

westfood commented 7 years ago

zkusím to zítra buildnout v dockeru

westfood commented 7 years ago

Testuju to z dockeru, takže ano.. /seeder/ háží 404 i z dockeru.. vtip je v tom, že poslouchá na /seeder//

viz..

 rudolf@kim  ~  curl -I 127.0.0.1:8000/seeder/
HTTP/1.0 404 Not Found
Date: Mon, 18 Sep 2017 19:06:04 GMT
Server: WSGIServer/0.2 CPython/3.5.2
Content-Type: text/html
Vary: Accept-Language, Cookie
X-Frame-Options: SAMEORIGIN
Content-Language: en

 rudolf@kim  ~  curl -I 127.0.0.1:8000/seeder//
HTTP/1.0 302 Found
Date: Mon, 18 Sep 2017 19:06:09 GMT
Server: WSGIServer/0.2 CPython/3.5.2
Content-Type: text/html; charset=utf-8
Vary: Accept-Language, Cookie
X-Frame-Options: SAMEORIGIN
Location: /seeder/auth/login/?next=/seeder//
Content-Language: en
Visgean commented 7 years ago

:( ok, ted jsem to fixnul, chyba byla, ze jsem nemel updatovane requirements.

westfood commented 7 years ago

cajk, testnu a dám vědět.. každopádně, postupně přejdu na deploy seederu přes docker.. ještě to musím trochu odladit.. takže budeš pak moci přejít na vyšší python, jestli to nějak pomůže při vývoji..

westfood commented 7 years ago

fachá..