Похоже, что проксировать
все порты автоматически не получится. Для каждого порта нужно будет прописывать в конфиге строчки отдельно. Для вашего примера понадобится что-то такое:
server {
listen 22;
server_name example1.com;
location / {
proxy_pass http://192.168.1.1:22;
}
}
server {
listen 22;
server_name example2.com;
location / {
proxy_pass http://192.168.1.2:22;
}
}
про remote_addr почитайте вот это:
habrahabr.ru/post/177113
На сколько я понимаю, поместить в remote_addr адрес пользователя не получится на стороне nginx'а.
UPD (на основе дискуссии в комментариях):
у меня есть сомнения, что такое возможно настроить с помощью nginx (да и вообще — настроить).
Во первых, nginx — это http сервер и, соответственно, http прокси (разве что ещё почтовые протоколы он поддерживает). Если нужны другие протоколы, то и использовать стоит другие решения.
Во вторых, я очень не уверен, что при подключении по другим протоколам вы сможете определить, что пользователь подключается к домену example1.com, а не к example2.com.
Ведь как определяется домен в случае http? Браузер передаёт такой запрос на сервер, подключаясь к example1.com:
GET / HTTP/1.0
Host: example1.com