LINUX.ORG.RU
ФорумAdmin

Реверс прокси location proxy_pass

 


0

1

Условие:

192.168.0.1 proxy.abc.loc - nginx

192.168.0.2 sms.abc.loc - вэб сервер

Задача Сделать проксирование с https://proxy.abc.loc/sms на http://sms.abc.loc

Кусок default.conf:

server {
    listen             443 ssl;
    server_name        proxy.abc.loc;
    ssl_certificate    /etc/nginx/cert/my.crt;
    ssl_certificate_key /etc/nginx/cert/my.key;
    ssl_protocols      TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_ciphers        HIGH:!aNULL:!MD5;

    location /sms {
      proxy_pass http://192.168.0.2;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
    }

Так не работает. Можно ли такую задачу решить с помощью nginx? Если можно, подскажите, где я ошибаюсь.



Последнее исправление: mrvitkor (всего исправлений: 1)
Ответ на: комментарий от GLaDOS

nginx -t все отлично, curl -v возвращает все норм.

дополнительная информация. если на DNS прописать

192.168.0.1 proxy.abc.loc 
192.168.0.1 sms.abc.loc 

а в конфиге nginx дополнительно прописать вот так:

server {
    listen             443 ssl;
    server_name        sms.abc.loc;
    ssl_certificate    /etc/angie/cert/my.crt;
    ssl_certificate_key /etc/angie/cert/my.key;
    ssl_protocols      TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_ciphers        HIGH:!aNULL:!MD5;
    ssl_certificate    /etc/angie/cert/my.crt;
    ssl_certificate_key /etc/angie/cert/my.key;

    location / {
        proxy_pass http://192.168.0.2;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
                }

То при открытии https://sms.abc.loc все великолепно проксируется на http://192.168.0.2 Но при открытии https://proxy.abc.loc/sms просто чистая страница.

При этом в логах nginx при доступе на https://sms.abc.loc вижу

192.168.0.100 - - [20/Aug/2024:08:04:12 +0500] "GET / HTTP/1.1" 200 31709 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0" "-"
192.168.0.100 - - [20/Aug/2024:08:04:12 +0500] "GET /lib/material-design-icons/css/materialdesignicons.css HTTP/1.1" 200 250292 "https://sms.abc.loc/" "Mozilla/5.0 (X11; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0" "-"
192.168.0.100 - - [20/Aug/2024:08:04:12 +0500] "GET /components/gmessagestable.js HTTP/1.1" 200 6440 "https://sms.abc.loc/" "Mozilla/5.0 (X11; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0" "-"
192.168.0.100 - - [20/Aug/2024:08:04:12 +0500] "GET /components/gnavbar.js HTTP/1.1" 200 7305 "https://sms.abc.loc/" "Mozilla/5.0 (X11; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0" "-"
192.168.0.100 - - [20/Aug/2024:08:04:12 +0500] "GET /components/guserstable.js HTTP/1.1" 200 4608 "https://sms.abc.loc/" "Mozilla/5.0 (X11; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0" "-"
192.168.0.100 - - [20/Aug/2024:08:04:12 +0500] "GET /lib/babel-polyfill/dist/polyfill.min.js HTTP/1.1" 200 99343 "https://sms.abc.loc/" "Mozilla/5.0 (X11; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0" "-"
192.168.0.100 - - [20/Aug/2024:08:04:12 +0500] "GET /lib/vuex/dist/vuex.js HTTP/1.1" 200 31966 "https://sms.abc.loc/" "Mozilla/5.0 (X11; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0" "-"
192.168.0.100 - - [20/Aug/2024:08:04:12 +0500] "GET /store/store.js HTTP/1.1" 200 4024 "https://sms.abc.loc/" "Mozilla/5.0 (X11; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0" "-"
192.168.0.100 - - [20/Aug/2024:08:04:12 +0500] "GET /components/gsendform.js HTTP/1.1" 200 7384 "https://sms.abc.loc/" "Mozilla/5.0 (X11; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0" "-"
192.168.0.100 - - [20/Aug/2024:08:04:12 +0500] "GET /main.js HTTP/1.1" 200 3288 "https://sms.abc.loc/" "Mozilla/5.0 (X11; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0" "-"
192.168.0.100 - - [20/Aug/2024:08:04:12 +0500] "GET /lib/axios/dist/axios.min.js HTTP/1.1" 200 13993 "https://sms.abc.loc/" "Mozilla/5.0 (X11; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0" "-"
192.168.0.100 - - [20/Aug/2024:08:04:12 +0500] "GET /components/ggroupstable.js HTTP/1.1" 200 6374 "https://sms.abc.loc/" "Mozilla/5.0 (X11; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0" "-"
192.168.0.100 - - [20/Aug/2024:08:04:12 +0500] "GET /components/gcontactstable.js HTTP/1.1" 200 6758 "https://sms.abc.loc/" "Mozilla/5.0 (X11; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0" "-"
192.168.0.100 - - [20/Aug/2024:08:04:12 +0500] "GET /favicon.ico HTTP/1.1" 499 0 "https://sms.abc.loc/" "Mozilla/5.0 (X11; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0" "-"

при открытии https://proxy.abc.loc/sms:

192.168.0.100 - - [20/Aug/2024:08:17:12 +0500] "GET /sms/ HTTP/1.1" 404 0 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0" "-"
192.168.0.100 - - [20/Aug/2024:08:17:12 +0500] "GET /favicon.ico HTTP/1.1" 404 152 "https://proxy.sodu.loc/sms/" "Mozilla/5.0 (X11; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0" "-"

Смысл доступа по префиксу в том, чтобы выпустить один раз комплект сертификатов для всей возможной фермы www серверов, которые со временем будут добавляться.

mrvitkor
() автор топика
Ответ на: комментарий от mrvitkor

надо делать rewrite, вот пример:

location /pppraaa {
    rewrite ^/pppraaa/(.*) /$1 break;
    
    proxy_set_header Host              $http_host;
    proxy_set_header X-Forwarded-Host  $host;
    proxy_set_header X-Real-IP         $remote_addr;
    proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    
    # delete header
    proxy_set_header Authorization "";
    
    proxy_pass       http://172.18.17.155;
    
    proxy_hide_header X-Powered-By;
}
krpsh
()
Ответ на: комментарий от krpsh

Спасибо krpsh, это очень помогло! Заголовок страницы отображается, но почему-то не работает перенаправление .css .js

192.168.0.100 - - [21/Aug/2024:15:17:37 +0500] "GET /sms/ HTTP/1.1" 200 31686 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0" "-"
192.168.0.100 - - [21/Aug/2024:15:17:37 +0500] "GET /lib/material-design-icons/css/materialdesignicons.css HTTP/1.1" 404 152 "https://proxy.abc.loc/sms/" "Mozilla/5.0 (X11; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0" "-"
192.168.0.100 - - [21/Aug/2024:15:17:37 +0500] "GET /lib/babel-polyfill/dist/polyfill.min.js HTTP/1.1" 404 152 "https://proxy.abc.loc/sms/" "Mozilla/5.0 (X11; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0" "-"
192.168.0.100 - - [21/Aug/2024:15:17:37 +0500] "GET /components/gsendform.js HTTP/1.1" 404 152 "https://proxy.abc.loc/sms/" "Mozilla/5.0 (X11; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0" "-"
192.168.0.100 - - [21/Aug/2024:15:17:37 +0500] "GET /components/gmessagestable.js HTTP/1.1" 404 152 "https://proxy.abc.loc/sms/" "Mozilla/5.0 (X11; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0" "-"
192.168.0.100 - - [21/Aug/2024:15:17:37 +0500] "GET /components/guserstable.js HTTP/1.1" 404 152 "https://proxy.abc.loc/sms/" "Mozilla/5.0 (X11; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0" "-"
192.168.0.100 - - [21/Aug/2024:15:17:37 +0500] "GET /lib/moment/moment-with-locales.js HTTP/1.1" 404 152 "https://proxy.abc.loc/sms/" "Mozilla/5.0 (X11; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0" "-"
192.168.0.100 - - [21/Aug/2024:15:17:37 +0500] "GET /lib/vuex/dist/vuex.js HTTP/1.1" 404 152 "https://proxy.abc.loc/sms/" "Mozilla/5.0 (X11; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0" "-"
192.168.0.100 - - [21/Aug/2024:15:17:37 +0500] "GET /store/store.js HTTP/1.1" 404 152 "https://proxy.abc.loc/sms/" "Mozilla/5.0 (X11; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0" "-"
192.168.0.100 - - [21/Aug/2024:15:17:37 +0500] "GET /lib/vuetify/dist/vuetify.min.js HTTP/1.1" 404 152 "https://proxy.abc.loc/sms/" "Mozilla/5.0 (X11; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0" "-"
192.168.0.100 - - [21/Aug/2024:15:17:37 +0500] "GET /lib/axios/dist/axios.min.js HTTP/1.1" 404 152 "https://proxy.abc.loc/sms/" "Mozilla/5.0 (X11; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0" "-"
192.168.0.100 - - [21/Aug/2024:15:17:37 +0500] "GET /main.js HTTP/1.1" 404 152 "https://proxy.abc.loc/sms/" "Mozilla/5.0 (X11; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0" "-"
192.168.0.100 - - [21/Aug/2024:15:17:37 +0500] "GET /lib/vuetify/dist/vuetify.min.css HTTP/1.1" 404 152 "https://proxy.abc.loc/sms/" "Mozilla/5.0 (X11; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0" "-"
192.168.0.100 - - [21/Aug/2024:15:17:37 +0500] "GET /lib/vue/dist/vue.js HTTP/1.1" 404 152 "https://proxy.abc.loc/sms/" "Mozilla/5.0 (X11; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0" "-"
192.168.0.100 - - [21/Aug/2024:15:17:37 +0500] "GET /components/ggroupstable.js HTTP/1.1" 404 152 "https://proxy.abc.loc/sms/" "Mozilla/5.0 (X11; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0" "-"
192.168.0.100 - - [21/Aug/2024:15:17:37 +0500] "GET /components/gcontactstable.js HTTP/1.1" 404 152 "https://proxy.abc.loc/sms/" "Mozilla/5.0 (X11; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0" "-"
192.168.0.100 - - [21/Aug/2024:15:17:37 +0500] "GET /components/gnavbar.js HTTP/1.1" 404 152 "https://proxy.abc.loc/sms/" "Mozilla/5.0 (X11; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0" "-"
192.168.0.100 - - [21/Aug/2024:15:17:37 +0500] "GET /components/gsendform.js HTTP/1.1" 404 152 "https://proxy.abc.loc/sms/" "Mozilla/5.0 (X11; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0" "-"
192.168.0.100 - - [21/Aug/2024:15:17:37 +0500] "GET /components/gcontactstable.js HTTP/1.1" 404 152 "https://proxy.abc.loc/sms/" "Mozilla/5.0 (X11; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0" "-"
192.168.0.100 - - [21/Aug/2024:15:17:37 +0500] "GET /components/ggroupstable.js HTTP/1.1" 404 152 "https://proxy.abc.loc/sms/" "Mozilla/5.0 (X11; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0" "-"
192.168.0.100 - - [21/Aug/2024:15:17:37 +0500] "GET /components/gmessagestable.js HTTP/1.1" 404 152 "https://proxy.abc.loc/sms/" "Mozilla/5.0 (X11; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0" "-"
192.168.0.100 - - [21/Aug/2024:15:17:37 +0500] "GET /components/guserstable.js HTTP/1.1" 404 152 "https://proxy.abc.loc/sms/" "Mozilla/5.0 (X11; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0" "-"
192.168.0.100 - - [21/Aug/2024:15:17:37 +0500] "GET /lib/moment/moment-with-locales.js HTTP/1.1" 404 152 "https://proxy.abc.loc/sms/" "Mozilla/5.0 (X11; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0" "-"
192.168.0.100 - - [21/Aug/2024:15:17:37 +0500] "GET /lib/vuex/dist/vuex.js HTTP/1.1" 404 152 "https://proxy.abc.loc/sms/" "Mozilla/5.0 (X11; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0" "-"
192.168.0.100 - - [21/Aug/2024:15:17:37 +0500] "GET /store/store.js HTTP/1.1" 404 152 "https://proxy.abc.loc/sms/" "Mozilla/5.0 (X11; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0" "-"
192.168.0.100 - - [21/Aug/2024:15:17:37 +0500] "GET /lib/vuetify/dist/vuetify.min.js HTTP/1.1" 404 152 "https://proxy.abc.loc/sms/" "Mozilla/5.0 (X11; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0" "-"
192.168.0.100 - - [21/Aug/2024:15:17:37 +0500] "GET /lib/axios/dist/axios.min.js HTTP/1.1" 404 152 "https://proxy.abc.loc/sms/" "Mozilla/5.0 (X11; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0" "-"
192.168.0.100 - - [21/Aug/2024:15:17:37 +0500] "GET /main.js HTTP/1.1" 404 152 "https://proxy.abc.loc/sms/" "Mozilla/5.0 (X11; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0" "-"
mrvitkor
() автор топика
Ответ на: комментарий от mrvitkor

ну это вполне логично, что css и js не работают, т.к. сайт ничего не знает о твоем префиксе «/sms»

в качестве бреда: возможно, можно сделать внутреннее перенаправление на nginx в нужный location «/sms» на основании заголовка Referer, судя по логам у тебя он равен «https://proxy.abc.loc/sms/», но надо понимать, что это будет работать только для браузеров, например для curl не будет

или править код сайта, что бы он подставлять префикс «/sms» для статики

krpsh
()
Ответ на: комментарий от mrvitkor

Значит, ваше приложение не готово к тому, что его запускают на префиксе /sms, а не на /. Вариантов у вас не так, чтобы много.

  1. Если приложение ваше или вы готовы его модифицировать, то, как писали выше, добавить поддержку префиксов или переписать так, чтобы работало на /sms.
  2. Если приложение готовое, то проверить его конфигурацию — может повезти, и там будет поддержка префиксов в URL. Однако, по опыту, в не-топовых приложениях разработчики о такой функции или не заморачиваются, или вообще не в курсе.
  3. Если так сложилось, что приложение (и другие — я так понимаю, вы там не только sms-ки хотите видеть) рассчитано только на домены, то рассмотреть возможность отказаться от своей изначальной идеи и сгенерировать один wildcard-сертификат. Бесплатные wildcard-ы выдаются с такой же лёгкостью как и на фиксированный домен. Отсюда не вижу, чем он мог бы вам не подойти.
anonymous
()