WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Nginx: ta bort .php från URL (https://www.wn.se/forum/showthread.php?t=1055596)

JesperA 2012-11-04 15:22

Nginx: ta bort .php från URL
 
Tjenare!

Gick över från Apache - Nginx på dev servern idag man har lite problem, det enda jag vill göra är att ta bort .php från URL:er och ersätta med en / i slutet av URL:er.

Just nu fungerar allt som körs på index.php bra, bara till att gå till www.example.com så körs ju indexfilen som vanligt, men går man till www.example.com/about/ (www.example.com/about.php) så får jag bara meddelandet: "File not found.", direktnavigering till: www.example.com/about.php fungerar fint. Men ja, Nginx verkar inte skriva om URL:erna korrekt så då hittar den inte PHP filen, hur löser jag detta? Har testat varenda svar som hittades via Google sökningar men nepp, inget fungerar, ibland verkar det som om svaren utgår från att man kör något MVC liknande (som tex WordPress) som alltid utgår från att man kör från index.php och ibland kanske index.php{query_string}, det gör jag inte i just detta fallet, vill bara att den skall ta bort .php filändelsen.

Min Nginx config fil ser ut såhär:

PHP-kod:



server 
{


  
listen 51001# listen also for IPv4 traffic on "regular" IPv4 sockets

  
server_name kaka;

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

  
root    /var/www/kaka;
  
index   index.php index.html;

  
## Block bad bots
  
if ($http_user_agent ~* (HTTrack|HTMLParser|libcurl|discobot|Exabot|Casper|kmccrew|plaNETWORK|RPT-HTTPClient)) {
    return 
444;
  }

  
## Block certain Referers (case insensitive)
  
if ($http_referer ~* (sex|vigra|viagra) ) {
    return 
444;
  }

  
## Deny dot files:
  
location ~ /\. {
    
deny all;
  }

  
## Favicon Not Found
  
location = /favicon.ico {
    
access_log off;
    
log_not_found off;
  }

  
## Robots.txt Not Found
  
location = /robots.txt {
    
access_log off;
    
log_not_found off;
  }

  
location / {
    
try_files $uri $uriindex.php;
    
rewrite ^(.+)/ /$1.php;
  }

  
location ~ \.php$ {
    include /
etc/nginx/fastcgi.conf;
    
fastcgi_pass unix:/var/run/php5-fpm.sock;
  }


  
### NginX Status
  
location /nginx_status {
  
stub_status on;
    
access_log   off;
  }

  
### FPM Status
  
location ~ ^/(status|ping)$ {
    
fastcgi_pass unix:/var/run/php5-fpm.sock;
    
access_log      off;
  }



Edit: Ändrar jag om Location / till denna neranför så fungerar www.example.com/about/ men däremot fungerar absolut inga bilder på servern alls av någon skum anledning

PHP-kod:

location / {
    
try_files $uri $uriindex.php;
    
rewrite ^(.+)/ $1.php;
  } 


Några förslag? :D

yakuzaemme 2012-11-04 15:46

Anledning till att saker och ting inte läses in korrekt är för att URL är felaktig. Den försöker alltså läsa från example.com/about/style.css, istället från rooten. Lägg till ett "/" i början när du ska länka till saker, så läser den från rooten.

<img src="images/123.jpg"> - FEL
<img src="/images/123.png"> - RÄTT

Är sidan byggd på mycket PHP och använder include mycket, så behöver du göra en ändring även här.

include("database.php"); - FEL
include($_SERVER['DOCUMENT_ROOT'] . '/database.php'); - RÄTT

JesperA 2012-11-04 15:57

Japp precis, men inte det som är problemet riktigt, inte ens www.example.com/bildmapp/bildfil1.jpg fungerar, så jag har inga problem med själva söklänkarna utan det är något strul med Nginx config filen

OBS: Bilderna fungerar (www.example.com/bildmapp/bildfil1.jpg) om jag kör med konfig filen exakt som i mitt första exempel, byter jag som sagt ut location / med det som är i mitt andra exempel så fungerar inte ens direktnavigering till bilderna.

yakuzaemme 2012-11-04 16:28

Har du read access till mappen/filerna i fråga?

JesperA 2012-11-04 16:42

Citat:

Ursprungligen postat av yakuzaemme (Inlägg 20454556)
Har du read access till mappen/filerna i fråga?

Japp, det tror jag iaf: http://cl.ly/image/0q3m3W2T0s3L

Fungerar ju att navigera till bilderna ibland beroende på Nginx config av ovanstående man väljer

Clarence 2012-11-04 16:47

Citat:

Ursprungligen postat av yakuzaemme (Inlägg 20454552)
include("database.php"); - FEL
include($_SERVER['DOCUMENT_ROOT'] . '/database.php'); - RÄTT

include("database.php"); - FEL
include($_SERVER['DOCUMENT_ROOT'] . '/database.php'); - FEL
include(__DIR__ . '/../database.php'); - RÄTT

Då är din applikation transportabel och delar kan användas som bibliotek i andra applikationer så länge katalogstruktur behålls.

yakuzaemme 2012-11-04 16:48

Kan du lägga upp URL när /about/ fungerar men ej bilder m.m

JesperA 2012-11-04 17:10

Tyvärr har jag ingen URL just nu då jag kör den lokalt och använder mobilen som modem och begränsad bandbredd.

Iaf, min errorlogg:

2012/11/04 17:05:30 [error] 10243#0: *25 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 192.168.1.70, server: module, request: "GET /avatars/4.jpg HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "192.168.1.76:51001"

Ska den verkligen försöka hämta avatar bilden genom fastcgi och fpm.sock?

yakuzaemme 2012-11-04 17:22

Citat:

Ursprungligen postat av JesperA (Inlägg 20454566)
Tyvärr har jag ingen URL just nu då jag kör den lokalt och använder mobilen som modem och begränsad bandbredd.

Iaf, min errorlogg:

2012/11/04 17:05:30 [error] 10243#0: *25 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 192.168.1.70, server: module, request: "GET /avatars/4.jpg HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "192.168.1.76:51001"

Ska den verkligen försöka hämta avatar bilden genom fastcgi och fpm.sock?

Hm.. Är ingen expert på just detta område men jag kan ha en aning om problemet. Iom. att du kör lokalt, vilket OS sitter du på? OSX, eller typ WMWare?

JesperA 2012-11-04 17:40

Just nu kör jag Ubuntu 12.04 i en VM med VMWARE, värd OS:et är OS X (har dock samma problem i min dedikerade Ubuntu burk)

Hmm testat nu, bilderna fungerar om dom ligger i root, såfort jag slänger in dom i en mapp i root så fungerar dom inte.

yakuzaemme 2012-11-04 17:46

Citat:

Ursprungligen postat av JesperA (Inlägg 20454570)
Just nu kör jag Ubuntu 12.04 i en VM med VMWARE, värd OS:et är OS X (har dock samma problem i min dedikerade Ubuntu burk)

Hmm testat nu, bilderna fungerar om dom ligger i root, såfort jag slänger in dom i en mapp i root så fungerar dom inte.

Alright, good! Detta löser vi ska du se.

Vart har du monterat (mount) NTFS (/etc/fstab).
http://www.tuxfiles.org/linuxhelp/fstab.html
Kan du posta den här?



Jag _tror_ att du glömt att "berättat" från mounten att skicka med index nodes, därför mappar det konstigt.

Ber även om ursäkt för mina hemska uttryck, har bara jobbat med Windows i skarpt läge så kan ej vanliga uttryck för resterande OS, hoppas du förstår vad jag menar.

JesperA 2012-11-04 17:56

Hmm ok min fstab ser ut såhär: (tror den kommer formateras konstigt här i forumet, den ser dock alla redan konstigt formaterad ut när man öppnar den i Gedit)

Kod:


# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>  <type>  <options>      <dump>  <pass>
proc            /proc          proc    nodev,noexec,nosuid 0      0
# / was on /dev/sda1 during installation
UUID=fe34a61d-8bc7-461f-8a46-eb8bae336335 /              ext4    errors=remount-ro 0      1
# swap was on /dev/sda5 during installation
UUID=ebe64e3f-b23b-42b6-98f8-295e24cb62b4 none            swap    sw              0      0
/dev/fd0        /media/floppy0  auto    rw,user,noauto,exec,utf8 0      0


Ursäkta, kanske skulle berättat detta långt tidigare, själva VM:en är installerad på en extern hårddisk, anledningen är att den VM:en är tänkt att användas som en Dev server för lite olika webbprojekt, då jag flänger runt på massa olika platser och olika datorer vill jag kunna bära med på en VM istället för att installera Nginx, Mysql, PHP, APC, fastcgi osv osv på varenda dator jag råkar använda :D

yakuzaemme 2012-11-04 17:59

Testa detta:

Kod:

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>  <type>  <options>      <dump>  <pass>
proc            /proc          proc    nodev,noexec,nosuid 0      0
# / was on /dev/sda1 during installation
UUID=fe34a61d-8bc7-461f-8a46-eb8bae336335 /              ext4    errors=remount-ro 0      1
# swap was on /dev/sda5 during installation
UUID=ebe64e3f-b23b-42b6-98f8-295e24cb62b4 none            swap    sw              0      0
/dev/fd0        /media/floppy0  auto    rw,user,noauto,exec,utf8,noserverino 0      0


JesperA 2012-11-04 18:08

Ok skall testa det, tackar.

Kräver en ändring i fstab att jag restartar Samba eller reconnectar till min share? Håller på och slänger över en massa filer och krams till VM installationen så isåfall kanske jag inte skall ändra i fstab förräns allt har överförts klart?

yakuzaemme 2012-11-04 18:10

Citat:

Ursprungligen postat av JesperA (Inlägg 20454578)
Ok skall testa det, tackar.

Kräver en ändring i fstab att jag restartar Samba eller reconnectar till min share? Håller på och slänger över en massa filer och krams till VM installationen så isåfall kanske jag inte skall ändra i fstab förräns allt har överförts klart?

Det vore nog bäst. Det var ett bra tag sen jag höll på med sånthär, men vad jag kommer ihop så innehåll fstab auth-info, dvs. användarnamn/lösenord, jag vet inte om det har ändrats men såg inte något sånt i det du postade.

Om den kodsnutten jag postade inte fungerar får vi leta vidare, nästan säker på att det har med index node (inode) att göra.

yakuzaemme 2012-11-04 19:13

Testat? Fungerade det?

JesperA 2012-11-04 19:32

Citat:

Ursprungligen postat av yakuzaemme (Inlägg 20454580)
Testat? Fungerade det?

Nae inte än, har testat en massa Nginx konfigurationer fram och tillbaka och nu fungerar det hyffsat, har nu världens instabilaste config fil, typ var 5:e Nginx restart så fungerar allt perfekt, mycket märkligt betéende.

Skall fixa fstab uppdateringen sen om jag inte hittar en stabil konfig.

yakuzaemme 2012-11-04 19:41

Citat:

Ursprungligen postat av JesperA (Inlägg 20454583)
Nae inte än, har testat en massa Nginx konfigurationer fram och tillbaka och nu fungerar det hyffsat, har nu världens instabilaste config fil, typ var 5:e Nginx restart så fungerar allt perfekt, mycket märkligt betéende.

Skall fixa fstab uppdateringen sen om jag inte hittar en stabil konfig.

Kör med en stabil konfig (den du hade innan) och testa min lilla addon. Alltid positivt att veta vad som orsakade problemet än att mosa in massa kod tills det fixar sig.

JesperA 2012-11-05 10:25

Citat:

Ursprungligen postat av yakuzaemme (Inlägg 20454586)
Kör med en stabil konfig (den du hade innan) och testa min lilla addon. Alltid positivt att veta vad som orsakade problemet än att mosa in massa kod tills det fixar sig.

Nae den configen jag hade var inte stabil, det är den jag utgår ifrån nu när jag testar och betéer sig väldigt skumt.

Ändringen i fstab hjäpte tyvärr inte.


Det är något skumt med min Nginx version, jag måste ändra server_name varenda gång jag ändrar i min config fil annars får jag felmeddelandet:

nginx: [warn] conflicting server name "forum" on 0.0.0.0:51010, ignored

ibland uppdateras inte config filen alls när jag restartar Nginx, vet inte vad som händer, jag har varken dubletter av config filen eller dubbla server värden.

Jag har dessutom tagit bort alla vhosts filer i sites-enabled i nginx mappen men ändå fungerar sidorna som nu är borttagna, även efter jag restartat Nginx, så hmm, på något vis sparas eller cachas vhost filerna någonstans.


Alla tider är GMT +2. Klockan är nu 02:34.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson