R
R
RWander2014-12-22 01:13:58
Nginx
RWander, 2014-12-22 01:13:58

Nginx - how to rewrite url?

Good afternoon! need help setting up rules for rewrite:
host.com/page/NNNNN is translated to localhost:1001/page?p=NNNNN
while all static (all pictures, css, js) is from host.com port 80
Since I am new to setting up nginx I will be very grateful for a detailed example!
(nginx 1.6.2)

Answer the question

In order to leave comments, you need to log in

3 answer(s)
A
Alexey Kureev, 2014-12-22
@RWander

server {
    # Порт
    listen 80;

    # Имя сервера
    server_name host.com;

    # Путь до статики
    root /var/www/;
    
    # Все файлы, которые будут совпадать по маске со сл. рег. выр., будут
    # обслуживаться nginx: сначало будет запрос как к файлу (например, host.com/js/main.js),
    # если файла не будет, то запрос будет переформирован как к директории (host.com/js/main.js/),
    # и если по прежнему ничего не найдено, вернется 404 ошибка
    location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|3gp|mp4)$ {
        try_files $uri $uri/ =404;
    }

    # Все остальные запросы, котоыре не подходят по маске статических файлов, описанных выше,
    # будут перенаправлены на localhost.
    # Первая строчка - адрес перенаправления, вторая - устанавливает заголовок Host. Если вы используете
    # выделенный сервер и он используется только под один проект - её можно опустить.
    location / {
        proxy_pass http://localhost:1001;
        proxy_set_header Host $host;
    }
}

More details about proxy_pass are well written in the official documentation of the nginx project or in the article about getting started with nginx nginx!

E
Eugene, 2014-12-22
@Nc_Soft

If it worked for you on Apache before, then you can give it to Apache in its original form. And entrust nginx to process only statics (html, js, css, png, etc).
So many hosters with panels do

server {
    server_name example.com;
    listen 80;
    set $root_path /var/www/data/example.com;
    location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|3gp|mp4)$ {
      expires max;
      root $root_path;
      error_page 404 = @fallback;
    }
    location / {
      proxy_pass http://127.0.0.1:81;
      proxy_redirect http://127.0.0.1:81/ /;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
    }
    location @fallback {
      proxy_pass http://127.0.0.1:81;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
    }
  }

E
Ergil Osin, 2014-12-22
@Ernillew

nginx.org/ru/docs/http/ngx_http_rewrite_module.html

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question