10 messages in ru.sysoev.nginxRe: New to nginx
FromSent OnAttachments
Ivan L.Feb 28, 2009 4:21 am 
Xavier GrangierFeb 28, 2009 4:36 am 
Igor SysoevFeb 28, 2009 4:52 am 
jeffsFeb 28, 2009 6:35 am 
Nick PearsonFeb 28, 2009 6:52 am 
mikeFeb 28, 2009 2:02 pm 
Ivan L.Feb 28, 2009 9:01 pm 
Ivan L.Feb 28, 2009 9:02 pm 
Igor SysoevMar 1, 2009 12:29 am 
Ivan L.Mar 2, 2009 5:19 am 
Actions with this message:
Paste this link in email or IM:
Paste this link in email or IM:
Atom feed for this thread
Paste this URL into your reader:
Subject:Re: New to nginxActions...
From:Igor Sysoev (is@rambler-co.ru)
Date:Mar 1, 2009 12:29:14 am
List:ru.sysoev.nginx

On Sat, Feb 28, 2009 at 09:03:14PM -0800, Ivan L. wrote:

Thanks.

I know it's strange, I've found most of them on the internet, and on the English
wiki documentation, and mix them together. After my first problem was solved,
that lead me to another problems. Perhaps that's because of config file is
confusing.

if(!-e $request_filename) { rewrite ^/search$ /index.php?where=search last; rewrite ^/posts/([0-9])$ /index.php?posts=$1 last;

break; }

Why do you use "^/search$" ?

I use this for the queries like "search?q=search_string"

Then you need just:

location = /search { rewrite ^ /index.php?where=search last; }

location /posts { rewrite ^/posts/(\d)$ /index.php?posts=$1 last; }

location /about { if($request_method !~ GET) { return 405; } if(!-e $request_filename) { expires max; rewrite ^/about$ /index.php?where=about break; } }

What do you expect here ?

I wanted only GET|HEAD availability on some pages, and only POST on some pages.

location = /about { if ($request_method != GET) { return 405; } rewrite ^ /index.php?where=about last; }

or

location = /about { limit_except GET { deny all; } rewrite ^ /index.php?where=about last; }

location /contact { if($request_method !~ ^(GET|POST)$) { return 405; } if(!-e $request_filename) { expires max; rewrite ^/contact$ /index.php?where=contact break; } }

What do you expect here ?

That suppose to be a page that only accepts POST.

location = /contact { if($request_method != POST) { return 405; }

rewrite ^ /index.php?where=contact last; }

location /downlods/ {

rewrite ^downloads/(.*)$ /downloads/$1 break; return 403; }

What do you expect here ?

That's downloads folder, I wanted to disable directory listing.

Just:

location /downlods/ { }

I wanted only GET|HEAD availability on some pages, and only POST on some pages.
But my config file didn't work so I changed it as follows, but the problem is on
some pages(about, and contact pages) I see the php source code(browser downloads
the php source code), and contact_ajax page returns 405 even if the method is
POST.

server { listen 80; client_max_body_size 50M; client_body_buffer_size 128k; charset utf-8;

root /var/www/myweb; index index.php index.html index.htm;

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

location / { if ($request_method !~ ^(GET|HEAD)$ ) { return 405; } if (-f $request_filename) { break; } if (-d $request_filename) { break; } if (!-e $request_filename) { rewrite ^/search$ /index.php?where=search last; rewrite ^/about$ /index.php?where=about last; rewrite ^/contact$ /index.php?where=contact last;

rewrite ^/posts/([0-9])$ /index.php?posts=$1 last;

break; } }

location /contact_ajax { if ($request_method !~ ^(POST)$ ) { return 405; } if (!-e $request_filename) { rewrite ^/contact_ajax$ /index.php?where=contact_js break; } }

location /downloads/ { rewrite ^downloads/(.*)$ /downloads/$1 break; return 403; }

location ~* ^.+\.(jpg|jpeg|gif|png|css|js)$ { expires 30d; }

error_page 500 502 503 504 /50x.html; location = /50x.html { root /var/www/myweb; }

location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/myweb$fastcgi_script_name; include fastcgi_params; }

----- Original Message ---- From: Igor Sysoev <is@rambler-co.ru> To: ngi@sysoev.ru Sent: Saturday, February 28, 2009 11:52:53 PM Subject: Re: New to nginx

On Sat, Feb 28, 2009 at 04:21:56AM -0800, Ivan L. wrote:

Hi,

I'm new to nginx, and I'm trying to configure it but I've some problems. I use
Ubuntu 8.10, and I installed nginx 0.6.32(apt-get install nginx)

The problems I see;

- unknown directive "if($request_method"

If I remove these statements, the error I receive

- unknown directive "if(-d"

When I remove if(-d) statement, the error I receive;

- unknown directive "if(!-e)"

As it was already said, you need a space between "if" and "(":

if (

However, your configuraiton is very strange.

I've tried to configure it as described in the English wiki, and some blogs I've
seen but I couldn't solve the problems. Can anyone help me?

Here's my /etc/nginx/sites-availabe/default config file;

server { listen 80; client_max_body_size 50M; client_body_buffer_size 128k; charset utf-8;

root /var/www/myweb; index index.php index.html index.htm;

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

location / { if($request_method !~ GET) { return 405; } if(-f $request_filename) { break; } if(-d $request_filename) { break; } if(!-e $request_filename) { rewrite ^/search$ /index.php?where=search last; rewrite ^/posts/([0-9])$ /index.php?posts=$1 last;

break; } }

Why do you use "^/search$" ?

location /about { if($request_method !~ GET) { return 405; } if(!-e $request_filename) { expires max; rewrite ^/about$ /index.php?where=about break; } }

What do you expect here ?

location /contact { if($request_method !~ ^(GET|POST)$) { return 405; } if(!-e $request_filename) { expires max; rewrite ^/contact$ /index.php?where=contact break; } }

What do you expect here ?

location /downlods/ { rewrite ^downloads/(.*)$ /downloads/$1 break; return 403; }

What do you expect here ?

location ~* ^.+\.(jpg|jpeg|gif|png|css|js)$ { expires 30d; }

error_page 500 502 503 504 /50x.html; location = /50x.html { root /var/www/myweb; }

location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/myweb$fastcgi_script_name; include fastcgi_params; }