[Tự Học linux CentOS 2019] Cài ðặt NGINX, APACHE, PHP7, MariaDB MySQL, SAMBA

Tätä yritän tehdä. En ole tarpeeksi perehtynyt Nginxiin luomaan mukautettuja uudelleenkirjoitussääntöjä kuten Apache. Olisi erittäin arvostettua, jos joku voisi auttaa minua Nginx-määritystiedostossa! Kiitos jo etukäteen!

Minulla on kuvapalvelin, jossa on Nginx portissa 80 ja Apache kuuntelussa 8080. Haluaisin tehdä ...

kun pyydät kuvaa, jota ei ole olemassa:

http://img.server.com/(...ANY DIRECTORY...)/123_4_anyimagename.jpg 

se ohjaa osoitteeseen

http://img.server.com:8080/image.php?id=123_4_anyimagename 

Kiitos! Minulla on melkein tämä toimi! Minun piti laittaa juuri

location ~ \.(gif|jpg|png)${ root /var/www/mysite.com/httpdocs/; try_files $uri @img_proxy } location @img_proxy { rewrite ^(.*)$ /image.php?id=$1 proxy_pass http://127.0.0.1:8080; } 

Joten images.php-tiedostossa, joka sijaitsee osoitteessa

/var/www/omasivusto.com/httpdocs/image.php

Minulla yksinkertaisesti on

<?php echo 'test';  ?> var13 ->

nähdäksesi, toimiiko se. Ongelma näyttää olevan se, että php ei käynnisty, ja sen renderointi pelkkänä tekstinä. Se on melkein siellä! Onko vihjeitä mistä etsiä?

Jos juoksen http://mydomain.com:8080/image.php Saan "testin" tuotoksena. Joten tiedän, että php toimii. Mitä minulla on näkymät?

  • 1 Aion merkitä tämän siirrettäväksi Serverfaultiin - sitten näen sen tulleen sieltä. Etkö ole varma, että se ei ollut a virhe...
  • @Cyclops suostui. Miksi tämä on täällä?

Nginx käyttää try_files direktiivissä 'nähdä, onko jotain olemassa ja varaa toiseen vaihtoehtoon' sen sijaan, että käyttäisit if-lauseita ja kirjoittaisi uudestaan.

Luo palvelinlohkossa sijaintilohko, joka vastaa tiedostojasi (esim. Jpg, gif, png - päättyvät tiedostot - lisää haluamasi laajennukset). Kenttään lisätään try_files-käsky. Nginx yrittää polkuja järjestyksessä - aloitat siis suoraan kuvan polusta ja luetat sitten php-tiedostosi polun (mutta se on oltava välityspalvelimessa, joten käytä sen sijaan nimettyä sijaintia). Ehkä jotain seuraavanlaista:

location ~ \.(gif|jpg|png) { try_files $uri @img_proxy; } 

Edellä oleva tarkoittaa olennaisesti seuraavaa: Yritä ensin tiedostoa, joka päättyy .gif-, .jpg- tai .png-tiedostoon ($uri), ja jos sitä ei ole, siirry @img_proxy.

Nyt sinun on luotava toinen sijainti @img_proxy että nginx käyttää, jos se ei löydä todellista tiedostoa. Tässä määrität välityspalvelinasetuksesi, sinulla on myös uudelleenkirjoitus polun muuttamiseksi ja lopulta välität URI: n taustapalvelimelle.

Jotain seuraavanlaista (regex EI OLE etsimäsi - se kulkee koko polun, ei vain tiedostonimen - voit muokata sitä tarpeidesi mukaan):

location @img_proxy { rewrite ^(.*)$ /image.php?id=$1; proxy_pass http://127.0.0.1:8080; } 

[muokattu korjaamaan joitain puuttuvia puolipisteitä]

Tämä on vanha viesti, koska muut vastaukset eivät toimineet minulle, jaan yksinkertaisen ratkaisuni muiden ohjelmoijien kanssa, joilla on sama ongelma. Koodit puuttuvat redirect tai permanent kirjoita sääntöjen lopussa:

location ~ \.(gif|jpg|png)${ root /var/www/mysite.com/httpdocs/; try_files $uri @img_proxy; } location @img_proxy { rewrite ^(.*)$ /image.php?id=$1 redirect; proxy_pass http://127.0.0.1:8080; } 

Tai yhdellä rivillä:

location @img_proxy { rewrite ^(.*)$ http://127.0.0.1:8080/image.php?id=$1 redirect; } 

cyberx86: n vastaus toimi minulle hyvin, mutta jouduin poistamaan välityspalvelin-rivin, poistamaan dollarin merkin ja lisäämään puolipisteitä. Lisäys määritykseeni on:

 location ~ \.(gif|jpg|png) { try_files $uri @img_proxy; } location @img_proxy { rewrite ^(.*)$ /tools/image/?url=$1; } 

työskennellyt sinulle: Charles Robertson | Haluatko yhteyttä?