V
Для получения айпа в вебсокет-соединении делаю так (endpoint.ex):
defmodule AppWeb.Endpoint doТрабла в том, что на проде туда попадает 127.0.0.1
...
socket "/socket", AppWeb.UserSocket,
websocket: [connect_info: [:peer_data, :x_headers]]
Size: a a a
V
defmodule AppWeb.Endpoint doТрабла в том, что на проде туда попадает 127.0.0.1
...
socket "/socket", AppWeb.UserSocket,
websocket: [connect_info: [:peer_data, :x_headers]]
D
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;
}
}
V
my-site:ru:4000
- айп определяется правильноSZ
D
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
D
D
V
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
M
AD
M
AD
MK
M
DF
function?
, а функции, которые бросают исключения, как function!
. function?!
или function!?
?LL
function?
, а функции, которые бросают исключения, как function!
. function?!
или function!?
?