NGINX для обратного прокси-сервера и включить SSL (wss: //)?



Answers

Не бойся, потому что отважная группа Ops Programmers решила ситуацию с брендом, nginx_tcp_proxy_module новый nginx_tcp_proxy_module

Написано в августе 2012 года, поэтому, если вы из будущего, вы должны сделать домашнее задание.

Предпосылки

Предполагается, что вы используете CentOS:

  • Удалите текущий экземпляр NGINX (предположим, что для этого используется сервер dev)
  • Если возможно, сохраните старые конфигурационные файлы NGINX, чтобы их можно было повторно использовать (включая скрипт init.d/nginx )
  • yum install pcre pcre-devel openssl openssl-devel и любые другие необходимые библиотеки для создания NGINX
  • Получите nginx_tcp_proxy_module из GitHub здесь nginx_tcp_proxy_module и запомните папку, в которую вы ее разместили (убедитесь, что она не застегнута)

Создайте свой новый NGINX

Опять же, предполагает CentOS:

  • cd /usr/local/
  • wget 'http://nginx.org/download/nginx-1.2.1.tar.gz'
  • tar -xzvf nginx-1.2.1.tar.gz
  • cd nginx-1.2.1/
  • patch -p1 < /path/to/nginx_tcp_proxy_module/tcp.patch
  • ./configure --add-module=/path/to/nginx_tcp_proxy_module --with-http_ssl_module (вы можете добавить больше модулей, если они вам понадобятся)
  • make
  • make install

Необязательный:

  • sudo /sbin/chkconfig nginx on

Настроить Nginx

Не забудьте сначала скопировать старые файлы конфигурации, если вы хотите их повторно использовать.

Важно: вам нужно будет создать директиву tcp {} на самом высоком уровне в вашем conf. Убедитесь, что это не входит в вашу директиву http {} .

В приведенном ниже примере конфигурации показан один сервер веб-сервера upstream и два прокси-сервера для SSL и Non-SSL.

tcp {
    upstream websockets {
        ## webbit websocket server in background
        server 127.0.0.1:5501;

        ## server 127.0.0.1:5502; ## add another server if you like!

        check interval=3000 rise=2 fall=5 timeout=1000;
    }   

    server {
        server_name _;
        listen 7070;

        timeout 43200000;
        websocket_connect_timeout 43200000;
        proxy_connect_timeout 43200000;

        so_keepalive on;
        tcp_nodelay on;

        websocket_pass websockets;
        websocket_buffer 1k;
    }

    server {
        server_name _;
        listen 7080;

        ssl on;
        ssl_certificate      /path/to/cert.pem;
        ssl_certificate_key  /path/to/key.key;

        timeout 43200000;
        websocket_connect_timeout 43200000;
        proxy_connect_timeout 43200000;

        so_keepalive on;
        tcp_nodelay on;

        websocket_pass websockets;
        websocket_buffer 1k;
    }
}
Question

Я так потерян и новичок в создании NGINX сам по себе, но я хочу иметь возможность включить безопасные веб-узлы без дополнительного слоя.

Я не хочу включать SSL на сервере websocket, но вместо этого я хочу использовать NGINX для добавления уровня SSL в целом.

Каждая веб-страница там говорит, что я не могу этого сделать, но я знаю, что могу! Благодаря тому, кто (я) может показать мне, как это сделать!




для .net core 2.0 Nginx с SSL

location / {
    # redirect all HTTP traffic to localhost:8080
    proxy_pass http://localhost:8080;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    # WebSocket support
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $http_connection;
}

Это сработало для меня




Хорошая, краткая статья Панкаха Малхотры обсуждает, как это сделать с NGINX и доступна here .

Ниже приведена базовая конфигурация NGINX:

map $http_upgrade $connection_upgrade {
    default upgrade;
    '' close;
}

upstream appserver {
    server 192.168.100.10:9222; # appserver_ip:ws_port
}

server {
    listen 8888; // client_wss_port

    ssl on;
    ssl_certificate /path/to/crt;
    ssl_certificate_key /path/to/key;


    location / {
        proxy_pass http://appserver;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
    }
}



Links