Puncte:0

Configurarea NGINX cu proxy_pass configurat pe un subdirector care indică către un server Docker și asigurarea rezolvării adreselor URL relative (.js, .css)

drapel ky

Am nginx 1.14.0 rulează pe serverul Ubuntu 18.04. Pe acel server, încerc să găzduiesc multe aplicații diferite. Scopul meu este ca fiecare locație să existe într-un subdirector al adresei mele URL, server.calebjay.com.

De exemplu, chiar acum aș dori să mă instalez pigallery2 pentru a fi disponibil la server.calebjay.com/photos. Pentru a face acest lucru, am o instanță docker care servește pe portul 800 și am nginx proxy la acesta. Acest lucru funcționează parțial, în măsura în care index.html încărcături.

Cu toate acestea, adrese URL relative, cum ar fi script src, nu se rezolvă, cred pentru că sunt formate ca main.js în loc de /photos/main.js.

Pentru a testa, pot OBȚINE https://server.calebjay.com/photos, și rezolvați an index.html. Primesc 404s pentru o mulțime de fișiere .js și .css. Confirm, dacă iau acele URL-uri relative și o fac https://server.calebjay.com/photos/main-asdfasdf.js, mai primesc un 404, {adresa-ip-server}/photos/main-asdf.js și https://server.calebjay.com/photos/main-asdf.js ambele returnează corect fișierul JS dat.

Există multe răspunsuri în acest sens, însă niciunul nu a funcționat pentru mine.

Configurația mea de bază nginx:

/etc/nginx/nginx.conf

utilizator www-date;
worker_proceses auto;
pid /run/nginx.pid;
includ /etc/nginx/modules-enabled/*.conf;

evenimente {
        conexiuni_muncitor 768;
}

http {
        sendfile activat;
        tcp_nopush activat;
        tcp_nodelay activat;
        keepalive_timeout 65;
        types_hash_max_size 2048;

        includ /etc/nginx/mime.types;
        aplicație de tip_default/octet-stream;

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Eliminarea SSLv3, ref: POODLE
        ssl_prefer_server_ciphers activat;

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

        gzip on;

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

Pentru subdomeniul și serverul docker unic la care mă adresez deocamdată:

/etc/nginx/sites-available/server.calebjay.com.conf

   Server {
        asculta 80 default_server;
        asculta [::]:80 default_server;

        nume_server server.calebjay.com www.server.calebjay.com;
        returnează 301 https://$server_name$request_uri;
  }

  Server {
    nume_server server.calebjay.com; 

    gzip on;


#locație ~ \.css {
# add_header Content-Type text/css;
#}
#locație ~ \.js {
# add_header Content-Type application/x-javascript;
#}

#Locație / {
 # dacă ($http_referer ~ "^https?://[^/]+/fotografii/") {
 # rescrie ^/(.*) https://$http_host/photos/$1 redirecționare;
 # }
# dacă ($http_referer = "https://server.calebjay.com/photos/") {
# rescrie ^/(.*) https://server.calebjay.com/photos/$1 redirecționare;
# }
#}

   locație /fotografii/ {
    # rescrie ^/fotografii(/.*)$ $1 pauză;
      proxy_pass http://localhost:800/;
      proxy_http_versiunea 1.1;
      proxy_set_header Actualizare $http_upgrade;
      proxy_set_header Conexiune „upgrade”;
     # sub_filter "<head>" "<head><base href=\"${scheme}://${host}/photos\">";
      proxy_set_header Gazdă $gazdă;
      proxy_cache_bypass $http_upgrade;
    }


    asculta 443 ssl default_server;
    asculta [::]:443 ssl default_server;

    ssl_certificate /etc/letsencrypt/live/server.calebjay.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/server.calebjay.com/privkey.pem;
    includ /etc/letsencrypt/options-ssl-nginx.conf;
  }

Fiecare dintre porțiunile comentate sunt experimente separate pe care le-am încercat din diferite locuri din rețeaua stivei:

Nici rescrie bazat pe http-referitor a funcționat, deși o imagine s-a rezolvat ca rezultat.

Având o regulă explicită pentru imagini nici adăugarea unui antet de tip mime a lucrat.

Răspunsuri privind conținutul static și try_files nu a funcționat și nici nu ar trebui să cred, deoarece fac proxy către un server.

Înlocuirea linkurilor folosind sub_filter nu a funcționat.

Setare Locație la fel de /fotografii în loc de /fotografii/ nu a funcționat.

Nu am acces la elementele interne ale docker, așa că nu pot modifica direct html-ul.

Cum pot să-mi iau hrefs pentru a rezolva împotriva domeniului corespunzător, cu subdirectorul de /fotografii/?

(Am repornit nginx după fiecare schimbare de configurare)

Mai multe detalii:

nginx -V

Versiunea nginx: nginx/1.14.0 (Ubuntu)
construit cu OpenSSL 1.1.1 11 septembrie 2018
Suportul TLS SNI activat
configurați argumente: --with-cc-opt='-g -O2 -fdebug-prefix-map=/build/nginx-H4cN7P/nginx-1.14.0=.-fstack-protector-strong -Wformat -Werror=format-security -fPIC -Wdate-time -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl ,-z,now -fPIC' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path= /usr/lib/nginx/modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http- proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-http_with-module -threads --with-http_addition_module --with-http_geoip_module=dynamic --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_fi lter_module=dynamic --with-http_sub_module --with-http_xslt_module=dynamic --with-stream=dynamic --with-stream_ssl_module --with-mail=dynamic --with-mail_ssl_module

EDIT: Ah, se pare că http_referer rescrie soluția funcționează în încărcarea js, css etc, dar apoi aplicația JS modifică adresa URL a clientului pe partea clientului, fără a emite o solicitare, pentru a server.calebjay.com/, determinând astfel afișarea browserului meu server.calebjay.com/login, provocând astfel pierderea cererilor viitoare http_referer. Poate fi imposibil să remediez acest lucru, deoarece nu cunosc vreo modalitate de a forța javascript să rescrie adresele URL pe baza unui subdirector. Pot fi forțat să am pur și simplu toate aplicațiile mele pe subdomenii separate, cu excepția cazului în care aplicația dată ia o configurație de subdirector.

Puncte:0
drapel us

Trebuie să configurați corect adresa URL de bază a aplicației, astfel încât să creeze adrese URL adecvate care să se potrivească cu configurația dvs.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.