У меня на одном IP есть несколько экземпляров node.js. Каждый экземпляр работает в другом домене через nginx обратный прокси.
Например:
map_hash_bucket_size 128;
map $host $backend_servers {
hostnames;
default 127.0.0.1:3000;
example.com 127.0.0.1:3001;
example.net 127.0.0.1:3002;
example.org 127.0.0.1:3003;
}
server {
listen 1.2.3.4:80 default_server;
server_name _;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://$backend_servers; # upstream here
proxy_redirect off;
}
}
Я хочу направить весь трафик из example.com
с префиксом пути /foo
к 127.0.0.1:3002
и удалить example.net
с сервера.
Старые ссылки на example.net/bar
должен быть перенаправлен со статусом 301 перемещен навсегда к example.com/foo/bar
.
Это моя конечная цель:
example.com >> 127.0.0.1:3001
example.com/foo >> 127.0.0.1:3002
example.net >> example.com/foo # 301 redirect
example.org >> 127.0.0.1:3003 # no change
Какие-либо предложения?
Вы можете изменить конфигурацию прокси-сервера nginx следующим образом:
server {
server_name example.com;
listen 80;
location / {
proxy_pass http://127.0.0.1:3001;
}
location /foo {
proxy_pass http://127.0.0.1:3002;
}
}
server {
server_name example.org;
listen 80;
location / {
proxy_pass http://127.0.0.1:3003;
}
}
server {
server_name example.net;
listen 80;
return 301 http://example.com/foo;
}