Size: a a a

2020 October 08

V

V in pro.elixir
Котаны, подскажите, как настроить проксирование в nginx, чтобы в вебсокете (феникс) получать реальный ремоут айп?

Для получения айпа в вебсокет-соединении делаю так (endpoint.ex):

defmodule AppWeb.Endpoint do
 ...

 socket "/socket", AppWeb.UserSocket,
   websocket: [connect_info: [:peer_data, :x_headers]]

Трабла в  том, что на проде туда попадает 127.0.0.1
источник

D

Disi in pro.elixir
а что в нгинксе пишешь покажи
источник

V

V in pro.elixir
Disi
а что в нгинксе пишешь покажи
server {
   listen <interface-ip>:80;

   server_name my-site.ru;

   location / {
       proxy_set_header Host $http_host;
       proxy_set_header Upgrade $http_upgrade;
       proxy_set_header Connection "Upgrade";
       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;
       proxy_pass http://127.0.0.1:4000;
       proxy_http_version 1.1;
       proxy_read_timeout 300;
   }
}
источник

V

V in pro.elixir
Когда коннекчусь напрямую к my-site:ru:4000 - айп определяется правильно
источник

SZ

Sergei Zobov in pro.elixir
Źmićer Rubinštejn
И гигаликсир нахуй отрыжка бездны
why so?
источник

D

Disi in pro.elixir
V
server {
   listen <interface-ip>:80;

   server_name my-site.ru;

   location / {
       proxy_set_header Host $http_host;
       proxy_set_header Upgrade $http_upgrade;
       proxy_set_header Connection "Upgrade";
       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;
       proxy_pass http://127.0.0.1:4000;
       proxy_http_version 1.1;
       proxy_read_timeout 300;
   }
}
а попробуй вместо $http_host просто $host хотя я не уверен
источник

V

V in pro.elixir
Вот решение https://stackoverflow.com/a/58584065
Нужно ещё правильно считать x-real-ip
источник

D

Disi in pro.elixir
ааа
источник

D

Disi in pro.elixir
понял
источник

V

V in pro.elixir
Я делал так:
defmodule AppWeb.UserSocket do
 
   @impl true
 def connect(_params, socket, connect_info) do
   remote_ip = connect_info[:peer_data][:address] |> :inet_parse.ntoa() |> to_string()
   socket = socket |> assign(:remote_ip, remote_ip)
   {:ok, socket}
 end

 ...
end
источник

V

V in pro.elixir
и по сути нужно сделать микс из этих вариантов, чтобы айп определялся и при прямом коннекте и по x-real-ip
источник

M

MrFlorius in pro.elixir
Подскажите пожалуйста, для Custom Type Ecto автоматически делает cast в query?
источник

AD

Anastasiya Dyachenko in pro.elixir
MrFlorius
Подскажите пожалуйста, для Custom Type Ecto автоматически делает cast в query?
насколько я помню, автоматически применяется в insert/update и Repo.get_by. В остальных случаях надо использовать type()
источник

M

MrFlorius in pro.elixir
Спасибо!
источник

AD

Anastasiya Dyachenko in pro.elixir
а хотя в where похоже тоже применяется, но лучше проверить
источник

MK

Max Kos in pro.elixir
V
как сироп
Как синоним Виагры 😁
источник
2020 October 09

M

MrFlorius in pro.elixir
Źmićer Rubinštejn
Вот такая вот жизнь несправедливая штука… Гугл забустил Питон благодаря ДС, в результате говноджанга, которая должна была умереть вместе с говнорельсами, тоже получила буст.
мне феникс намного больше джанги нравится
источник

DF

Denis Fakhrtdinov in pro.elixir
Гайз, в эликсире булевые функции принято помечать как function?, а функции, которые бросают исключения, как function!.
А если булевая функция может бросить исключение, это function?! или function!? ?
источник

LL

Lama Lover in pro.elixir
Denis Fakhrtdinov
Гайз, в эликсире булевые функции принято помечать как function?, а функции, которые бросают исключения, как function!.
А если булевая функция может бросить исключение, это function?! или function!? ?
Если булевая функция может бросить исключение, то это не булевая функция
источник

DF

Denis Fakhrtdinov in pro.elixir
источник