如何使用相同的域名在相同的IP:Port上运行nginx和ocserv?

如何使用相同的域名在相同的IP:Port上运行nginx和ocserv?

如何使用相同的域名在相同的 IP:Port 上运行 nginx 和 ocserv?如果我没记错的话,就像使用 SSTP 协议可以实现类似的事情一样。我正在使用 Ubuntu 20.04。

答案1

您最有可能要做的是配置 Nginx 以侦听 HTTPS 端口,并将其配置为代理到在不同本地端口上运行的 ocserv 进程。Nginx 需要决定为哪个站点提供服务,为了区分,它可以关闭以下任一操作:

  • 主机(例如,vpn.yourdomain.com 与 web.yourdomain.com)。
  • 前缀路径(例如,web.yourdomain.com/vpn/)。

主机是最好的方法。在该配置中,您将配置两个 DNS 条目以指向同一 IP 地址。Nginx 配置如下所示:

server {

# SSL configuration
#
listen 443 ssl default_server;


    ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem;
    ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;

    server_name web.yourdomain.com;

        location ~ / {
                root /var/www/html/blank/;

                try_files $uri $uri/ =404;
                allow all;
        }

}

server {

    # SSL configuration
    #
    listen 443;


    ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem;
    ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;

    # Add index.php to the list if you are using PHP
    index index.html index.htm index.nginx-debian.html;

    server_name vpn.yourdomain.com;

    location / {

          proxy_pass_header Server;
          proxy_set_header Host $http_host;
          proxy_redirect off;
          proxy_set_header X-Forwarded-For  $remote_addr;
          proxy_set_header X-Forwarded-Proto $scheme;
          proxy_set_header X-Scheme $scheme;
          proxy_connect_timeout 120s;
          proxy_read_timeout 600s;
          proxy_pass http://127.0.0.1:1234/;

    }


}

在该配置中,从外部来看,这两项服务都可通过相同的 IP/端口 (HTTPS/443) 访问。它们将使用不同的 DNS 主机名 (web.yourdomain.com 和 vpn.yourdomain.com),均指向相同的 IP。在此示例中,您的 ocserv 进程将监听本地端口 1234

相关内容