因爲gotty我做了url加密,html
因此url在nginx裏的前綴要能替換才行。nginx
配置關鍵就在於有沒有/git
#user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; upstream k8s_gotty_log { ip_hash; server 1.2.3.4:8081; } upstream k8s_gotty_tty { ip_hash; server 1.2.3.4:8082; } server { listen 8080; server_name localhost; client_max_body_size 500m; proxy_connect_timeout 600; proxy_read_timeout 600; proxy_send_timeout 600; # add_header 'Access-Control-Allow-Origin' '*'; # proxy_set_header Connection ""; proxy_http_version 1.1; proxy_set_header Origin ""; proxy_set_header Host $host; proxy_set_header X-Real-Scheme $scheme; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; location /k8s_gotty_log/ { proxy_pass http://k8s_gotty_log/; } location /k8s_gotty_tty/ { proxy_pass http://k8s_gotty_tty/; } } }
其中涉及兩個知識點,標紅的。github
1,在Nginx反向代理一個帶有WebSocket功能的程序時,發現訪問WebSocket接口時老是出現403響應。app
查詢相關解決辦法,找到github上的這個issue,因此只須要修改Nginx的配置,添加proxy_set_header Origin "";
就好了:加密
2,在nginx中配置proxy_pass時,當在後面的url加上了/,至關因而絕對根路徑,則nginx不會把location中匹配的路徑部分代理走;若是沒有/,則會把匹配的路徑部分也給代理走。url
https://www.jb51.net/article/78746.htmspa
下面四種狀況分別用http://192.168.1.4/proxy/test.html 進行訪問。
第一種:.net
會被代理到http://127.0.0.1:81/test.html 這個url
第二咱(相對於第一種,最後少一個 /)代理
會被代理到http://127.0.0.1:81/proxy/test.html 這個url
第三種:
會被代理到http://127.0.0.1:81/ftlynx/test.html 這個url。
第四種狀況(相對於第三種,最後少一個 / ):
會被代理到http://127.0.0.1:81/ftlynxtest.html 這個url