Назад | Перейти на главную страницу

Совместное использование портов OpenVPN и nginx: адрес уже используется

У меня есть экземпляр nginx, работающий на портах 80 и 443, и я хотел бы использовать openvpn с портом 443 в совместном использовании.

Итак, в моем server.conf у меня есть это

port 443
port-share 127.0.0.1 4433

proto tcp
;proto udp

И в моем nginx.conf

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    client_max_body_size 2M;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;

    # OpenVPN
    server {
        listen 4433;
    }
}

Но когда я сначала запускаю демон nginx, служба openvpn не может загрузиться с ошибкой:

Mon Jan 18 13:36:19 2016 us=761548 TCP/UDP: Socket bind failed on local address [undef]: Address already in use

И если я сначала запустил openvpn, nginx вернет:

[emerg] 5301#0: bind() to 0.0.0.0:443 failed (98: Address already in use)

Я не понимаю, почему не работает функция совместного использования портов.

В /etc/nginx/conf.d/ должен быть какой-то файл .conf, привязанный к порту 443. Это приводит к ошибке невозможности привязки (только одно приложение может привязаться к порту за раз, по крайней мере, для каждого адреса прослушивания) .

Вы пишете, что у вас «nginx работает на портах 80 и 443» - я полагаю, вы определили это в папке conf.d. Просто измените директиву listen с 443 на 4433, и она должна работать.

Вы неправильно прочитали документацию. Два демона не могут использовать одну привязку.

В конфигурации nginx вы должны определить следующее:

listen 127.0.0.1:4433 ssl;

Хотя мой совет - избегайте OpenVPN и особенно избегайте совместного использования портов в OpenVPN. С помощью port-sharing паразитирует на надежности вашего веб-сервера и вашего сервиса OpenVPN. Кроме того, вы полагаетесь на людей, которые недостаточно опытны в веб-серверах и HTTP, а это приведет к еще большим проблемам.