Перешли по этой ссылке для настройки Nginx нажмите здесь Попытка подключить WebSocket (socketo.me) через HTTPS, не удалась, выдавала ошибку как
Время открытия рукопожатия WebSocketout
Поскольку ngnix моего хост-сервера (версия: 1.13.8) настроен для работы в режиме обратного прокси во внешнем интерфейсе.Вот конфигурация Nginx
http {
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
upstream websocket {
server xx.xxx.xxx.x:8282; #External IP address
}
server {
location / {
proxy_pass http://xx.xxx.xxx.x:8080; #External IP address
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_read_timeout 120s;
}
}
}
chatroom.php
<script type="text/javascript">
$(document).ready(function(){
var conn = new WebSocket('ws://xx.xxx.xxx.x:8282');
conn.onopen = function(e) {
console.log("Connection established!");
};
conn.onmessage = function(e) {
console.log(e.data);
...
};
conn.onclose = function(e) {
console.log("Connection Closed!");
}
})
</script>
server.php
<?php
use Ratchet\Server\IoServer;
use Ratchet\Http\HttpServer;
use Ratchet\WebSocket\WsServer;
use MyApp\Chat;
require dirname(__DIR__) . '/vendor/autoload.php';
$server = IoServer::factory(
new HttpServer(
new WsServer(
new Chat()
)
),
8282
);
$server->run();
Перед применением SSL
Затем после применения SSL
Установлено соединение WebSocket через порт # 8282 с терминала, как показано ниже
root@user:/var/www/vhosts/somedomain.xy/httpdocs/chatroom-php-mysql/bin# php server.php
Server Started.
New connection! (84)
Connection 84 has disconnected
Когда URL-адрес веб-сайта открывается в браузере, в основном это происходит следующим образом:
Клиентский запрос поступает в интерфейсный Nginx с запросом некоторого ресурса (.HTML-страница, .php-страница, изображение, JavaScript и т. д.).Nginx на нашем хостинг-сервере работает с портами TCP: 80 - http, 443 - https.
Nginx проверяет, есть ли ресурс в кеше.
Если ресурс кэшируется, Nginx возвращает кэшированное содержимое.
Если ресурсне кэшируется или если запрашивается динамическая страница (например, index.php), Nginx прокси (перенаправляет) запрос на внутренний сервер - Apache.Apache на нашем хостинг-сервере работает по TCP-портам: 7080 - http, 7081 - https.Затем Nginx кэширует статический контент - HTML, изображения, js, css.
Обновлено:
Символическая ссылка была создана в /etc/nginx/plesk.conf.d/vhosts
в somedomain.xy.conf
#ATTENTION!
#
#DO NOT MODIFY THIS FILE BECAUSE IT WAS GENERATED AUTOMATICALLY,
#SO ALL YOUR CHANGES WILL BE LOST THE NEXT TIME THE FILE IS GENERATED.
server {
listen xx.xxx.xxx.x:443 ssl http2;
server_name somedomain.xy;
server_name www.somedomain.xy;
server_name ipv4.somedomain.xy;
ssl_certificate /opt/psa/var/certificates/scfPsMGvJ;
ssl_certificate_key /opt/psa/var/certificates/scfPsMGvJ;
ssl_client_certificate /opt/psa/var/certificates/scfSdpTzN;
client_max_body_size 128m;
root "/var/www/vhosts/somedomain.xy/httpdocs";
access_log "/var/www/vhosts/system/somedomain.xy/logs/proxy_access_ssl_log";
error_log "/var/www/vhosts/system/somedomain.xy/logs/proxy_error_log";
#extension letsencrypt begin
location /.well-known/acme-challenge/ {
root /var/www/vhosts/default/htdocs;
types { }
default_type text/plain;
satisfy any;
auth_basic off;
allow all;
location ~ ^/\.well-known/acme-challenge.*/\. {
deny all;
}
}
#extension letsencrypt end
location / {
proxy_pass https://xx.xxx.xxx.x:7081;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Accel-Internal /internal-nginx-static-location;
access_log off;
}
location /internal-nginx-static-location/ {
alias /var/www/vhosts/somedomain.xy/httpdocs/;
internal;
}
location ~ ^/(plesk-stat|awstats-icon|webstat|webstat-ssl|ftpstat|anon_ftpstat) {
proxy_pass https://xx.xxx.xxx.x:7081;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Accel-Internal /internal-nginx-static-location;
access_log off;
}
location ~ ^/proj_ci/ {
proxy_pass https://xx.xxx.xxx.x:7081;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Accel-Internal /internal-nginx-static-location;
access_log off;
}
location ~ "^/files/" {
proxy_pass https://xx.xxx.xxx.x:7081;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Accel-Internal /internal-nginx-static-location;
access_log off;
}
add_header X-Powered-By PleskLin;
}
server {
listen xx.xxx.xxx.x:80;
server_name somedomain.xy;
server_name www.somedomain.xy;
server_name ipv4.somedomain.xy;
client_max_body_size 128m;
root "/var/www/vhosts/somedomain.xy/httpdocs";
access_log "/var/www/vhosts/system/somedomain.xy/logs/proxy_access_log";
error_log "/var/www/vhosts/system/somedomain.xy/logs/proxy_error_log";
#extension letsencrypt begin
location /.well-known/acme-challenge/ {
root /var/www/vhosts/default/htdocs;
types { }
default_type text/plain;
satisfy any;
auth_basic off;
allow all;
location ~ ^/\.well-known/acme-challenge.*/\. {
deny all;
}
}
#extension letsencrypt end
location / {
proxy_pass http://xx.xxx.xxx.x:7080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Accel-Internal /internal-nginx-static-location;
access_log off;
}
location /internal-nginx-static-location/ {
alias /var/www/vhosts/somedomain.xy/httpdocs/;
internal;
}
location ~ ^/(plesk-stat|awstats-icon|webstat|webstat-ssl|ftpstat|anon_ftpstat) {
proxy_pass http://xx.xxx.xxx.x:7080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Accel-Internal /internal-nginx-static-location;
access_log off;
}
location ~ ^/proj_ci/ {
proxy_pass http://xx.xxx.xxx.x:7080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Accel-Internal /internal-nginx-static-location;
access_log off;
}
location ~ "^/files/" {
proxy_pass http://xx.xxx.xxx.x:7080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Accel-Internal /internal-nginx-static-location;
access_log off;
}
add_header X-Powered-By PleskLin;
}
Я пытался создать в /etc/nginx/conf.d
с именем файла app_name.conf
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
upstream websocket {
server xx.xxx.xxx.x:8282;
}
server {
# listen xx.xxx.xxx.x:80;
# listen 443 default_server ssl;
listen 443 ssl http2;
server_name somedomain.xy;
location / {
proxy_pass http://xx.xxx.xxx.x:8282;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_read_timeout 120s;
proxy_read_timeout 86400;
# proxy_redirect default;
# proxy_redirect http://xx.xxx.xxx.x:8282/ /;
# proxy_redirect http://www.somedomain.xy/ /;
}
location /chat/ {
proxy_pass http://xx.xxx.xxx.x:8282;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_read_timeout 120s;
}
location /test {
rewrite ^/test(.*) $1 break;
proxy_pass http://127.0.0.1:8282;
}
location /wss {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Proxy "";
proxy_set_header Host $http_host;
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://xx.xxx.xxx.x:8282;
proxy_read_timeout 120s;
}
location /websocket {
proxy_pass http://xx.xxx.xxx.x:8282; ## WSPHP listening port
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_read_timeout 86400;
}
}
Кроме того, в Nginx мы не можем видеть такие каталоги, они /etc/nginx/sites-available/*
и /etc/nginx/sites-enabled/*
, которые мы увидим под /etc/apache2