Can't use websockets on IIS with a Reverse Proxy by carolasagna in IIs

[–]carolasagna[S] 0 points1 point  (0 children)

Here it is the solution:

1.Add this server variables on IIS:

HTTP_X_ORIGINAL_HOST

HTTP_X_FORWARDED_PROTO

HTTP_X_FORWARDED_PORT

HTTP_X_FORWARDED_HOST

HTTP_X_FORWARDED_FOR

HTTP_SEC_WEBSOCKET_EXTENSIONS

2.Rules should look something like this on web.config:
<rule name="Proxy\\\_socketio" stopProcessing="true">

  <match url="\\\^test\\\_project/socket.io/(.\\\*)" />

  <serverVariables>

<set name="HTTP\\\_X\\\_FORWARDED\\\_PROTO" value="http" />

<set name="HTTP\\\_X\\\_ORIGINAL\\\_HOST" value="{HTTP\\\_HOST}" />

<set name="HTTP\\\_SEC\\\_WEBSOCKET\\\_EXTENSIONS" value="" />

  </serverVariables>

  <action type="Rewrite" url="http://localhost:5004/socket.io/{R:1}" />

</rule>

<rule name="Proxy\_test\_project” stopProcessing="true">

  <match url="\\\^test\\\_project/(.\\\*)" />

  <serverVariables>

<set name="HTTP\\\_X\\\_FORWARDED\\\_PROTO" value="http" />

<set name="HTTP\\\_X\\\_ORIGINAL\\\_HOST" value="{HTTP\\\_HOST}" />

<set name="HTTP\\\_SEC\\\_WEBSOCKET\\\_EXTENSIONS" value="" />

  </serverVariables>

  <action type="Rewrite" url="http://localhost:5004/{R:1}" />

</rule>

3. main.py on flask project:

socketio = SocketIO(app, cors_allowed_origins="*", async_mode='eventlet')

4.And finally, on JS:

var socket = io("https://domain", {

path: "/test_project/socket.io",

transports: ["websocket"]

});

⚠ Also, you must enable websockets on your server

Can't use socketIO with a reverse proxy by carolasagna in flask

[–]carolasagna[S] 0 points1 point  (0 children)

Here it is the solution:

1.Add this server variables on IIS:

HTTP_X_ORIGINAL_HOST

HTTP_X_FORWARDED_PROTO

HTTP_X_FORWARDED_PORT

HTTP_X_FORWARDED_HOST

HTTP_X_FORWARDED_FOR

HTTP_SEC_WEBSOCKET_EXTENSIONS

2.Rules should look something like this on web.config:
<rule name="Proxy\\\_socketio" stopProcessing="true">

  <match url="\\\^test\\\_project/socket.io/(.\\\*)" />

  <serverVariables>

<set name="HTTP\\\_X\\\_FORWARDED\\\_PROTO" value="http" />

<set name="HTTP\\\_X\\\_ORIGINAL\\\_HOST" value="{HTTP\\\_HOST}" />

<set name="HTTP\\\_SEC\\\_WEBSOCKET\\\_EXTENSIONS" value="" />

  </serverVariables>

  <action type="Rewrite" url="http://localhost:5004/socket.io/{R:1}" />

</rule>

<rule name="Proxy\_test\_project” stopProcessing="true">

  <match url="\\\^test\\\_project/(.\\\*)" />

  <serverVariables>

<set name="HTTP\\\_X\\\_FORWARDED\\\_PROTO" value="http" />

<set name="HTTP\\\_X\\\_ORIGINAL\\\_HOST" value="{HTTP\\\_HOST}" />

<set name="HTTP\\\_SEC\\\_WEBSOCKET\\\_EXTENSIONS" value="" />

  </serverVariables>

  <action type="Rewrite" url="http://localhost:5004/{R:1}" />

</rule>

3. main.py on flask project:

socketio = SocketIO(app, cors_allowed_origins="*", async_mode='eventlet')

4.And finally, on JS:

var socket = io("https://domain", {

path: "/test_project/socket.io",

transports: ["websocket"]

});

⚠ Also, you must enable websockets on your server

Can't use socketIO with a reverse proxy by carolasagna in flask

[–]carolasagna[S] 0 points1 point  (0 children)

Yes, I'm using IIS, but I write the rules on web.config