@RWander

Nginx — как переписать url?

Добрый день! нужна помощь в настройке правил для rewrite:

host.com/page/NNNNN транслируется в localhost:1001/page?p=NNNNN
при этом вся статика (все картинки, сss, js)- с 80 порта host.com

Так как я новичок в настройке nginx буду очень благодарен за подробный пример!
(nginx 1.6.2)
  • Вопрос задан
  • 4368 просмотров
Решения вопроса 1
xamd
@xamd
javascript-ninja
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;
    }
}


Более подробно про proxy_pass хорошо написано в официальной документации проекта nginx или же в статье про начало работы с nginx
Про Header заголовок можно прочитать здесь (к сожалению, на русском нормального изложения материала не нашел, может кто поправит?)

Всех благ, и успехов в изучении nginx!
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@Nc_Soft
Если у тебя это раньше на апаче работало, то можно и отдать это апачу в изначальном виде. А nginx поручить обработку только статики (html, js, css, png, etc).
Так многие хостеры с панельками и делают
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;
		}
	}
Ответ написан
Комментировать
Ernillew
@Ernillew
Администрирую *nix-системы с 1997 года
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы