场景: pc主机上 运行着一个 vmware,内有windows虚拟机和Linux虚拟机,都是vmnet8 nat。 pc主机上启动了某代理软件,代理软件的运行端口如下。 "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20240920/5ae19c87c995e90a360e103a91c37794.png) 需求: 实现windows虚拟机内 能够正常访问 外部世界 备注: 1. 在路由器上搞代理,这样整个局域网内都可以使用 ,这个方案不要提了 2. 在windows虚拟机内 安装 购买的 代理软件(也就是吧pc主机 安装的代理软件安装到虚拟机内部) 这种方案也不要提了 3. windows 虚拟机内配置 代理服务器为 pc主机的代理服务器,这种方案要求pc主机关闭防火墙,因此方案不行。 目前尝试的方案 "https://xz.aliyun.com/t/13167" (https://link.segmentfault.com/?enc=14SKzObIF27MctW3QXrQlQ%3D%3D.kTZ8QOaNUqoteCuWMbQoxecUmr9d%2BXOgM7lyJ7%2FHxsQ%3D) 这篇文章提到了 使用 Proxifier 接管所有流量,针对 vmware的exe 做代理。 我试了下没有成功。 配置vm开头的所有exe 都使用指定的代理服务器,不管是 https还是socks5都不行。windows虚拟机内都无法访问youtube "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20240920/0227fbf2eb42878a66a50654be11218e.png) 且 Proxifier 流量界面没显示 代理到了vm的流量 "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20240920/18181a202fc6a4841afb0c8603712500.png) 问题 1. 为什么上面的配置方案没有代理到vm的流量 2. 如何实现 对虚拟机的代理?
vite配置代理,target失效 配置的baseUrl // config.js export const BASE_URL = '/api' 这是vite.config.js server的配置 // vite.config.js export default defineConfig({ server: { host: '0.0.0.0', port: 3060, proxy: { '/api': { target: 'http://127.0.0.1:10306', changeOrigin: true, rewrite: (path) => path.replace(/^\/api/, '') } } } }) 调用请求后target指向前端地址"http://localhost:3060" (https://link.segmentfault.com/?enc=BCyhYL1UR1DGMDS%2FRuDROg%3D%3D.oIlHqb8uCLmvbIMoek1ob8LnpQ3psfROU8asmirpcmE%3D),没有指向配置的后端target. "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241009/3ae18f700da2e0062b88397ea5d83bbd.png) "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241009/10c2202f75f7716f06537879148068ef.png) 使用vite issues中的agent配置依旧无法解决" [vite] http proxy error #8998" ([https://github.com/vitejs/vite/discussions/8998](https://link.segmentfault.com/?enc=S%2F4vXe5x37znSEzd2e97Ug%3D%3D.zVNsp%2F30eTCG%2FttzK2tifwWH63C1lWOXWPgr7mZlgOSIcQgQHM0zZhMRu2NiGcR3))
关于自学vue3响应式源码-proxy中的一个问题(Reflect.set) 最近在看vue3响应式源码,自己手写时发现了一个情况是 export const reactive = (target) => { return new Proxy(target, { get(target, prop, recevier) { //依赖收集 track(target, prop); return Reflect.get(...arguments); }, set(target, prop, value, recevier) { let res = Reflect.set(...arguments); //触发依赖更新 trigger(target, prop); //这里如果直接return Reflect.set(...arguments),则会有更新问题 //比如在setTimeout中同时更新一个对象的两个属性,则计时器结束之后只会更新第一个属性,第二个不触发更新 //先赋值res,再返回,则正常 return res; }, }) } let animal = reactive( { name: 'dog', age: 2 } ) effect(() => { document.querySelector('#app').innerHTML = ` name: ${animal.name} age: ${animal.age} ` }) setTimeout(()=>{ animal.name = 'cat'//更新 animal.age = 3//直接return Reflect.set不会更新 },2000) 改为let res = Reflect.set(...arguments);再返回则正常
背景: vue3+vite项目中:前后端联调的时候, 代理转发设置成功,但是由于接口文件中有多个文件,一个个加代理配置比较麻烦,所以想着给接口增加前缀的方式去统一设置代码 比如接口文件中有如下两个接口,url分别如下 '/chekTicketData/list', '/getManagerData/page', 统一增加前缀/sys '/sys/chekTicketData/list', '/sys/getManagerData/page', 在本地.env.development文件中统一配置设置转发 VITE_PROXY = '[ ["/api/sys", "http://10.9.33.8:10049"] ]' 接口可以正常响应,但是这个/sys是自己自定义的,而且这个设置是在.env.development。请问下要在项目的测试环境和生产环境做映射吗?映射/sys对应的服务
我们公司有限制:不能"npm publish"上传包到 "registry.npmjs.org " 请问下,是否可以有方式设置网络代理,比如,有一个服务器,我先代理到服务器,服务器再上传到"registry.npmjs.org " ?
vue3设置了代理请求本地后端还是403是什么情况导致的 "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20240921/a7541a881ed9a6c49c1d4906d5c06877.png) "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20240921/93b8b5a82d415d560249628986086d18.png) "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20240921/e7baa9a512821fbf7f56afe7d9969b91.png)
linux系统版本:Rocky Linux release 9.1 (Blue Onyx) nginx版本:1.21.4.1,编译安装使用stream模块 代理服务器内网ip为10.0.8.15,安装使用nginx作为4层代理到内网ip为10.0.9.2的后端iis服务器,nginx代理部分配置如下: stream{ upstream https { server 10.0.9.2:443; } server{ listen 443; proxy_connect_timeout 60s; proxy_timeout 5m; proxy_pass https; proxy_bind $remote_addr transparent; } upstream http { server 10.0.9.2:80; } server{ listen 80; proxy_connect_timeout 60s; proxy_timeout 5m; proxy_pass http; proxy_bind $remote_addr transparent; } } linux系统的内核参数配置如下: net.ipv4.ip_forward = 1 net.ipv4.conf.all.rp_filter = 0 net.ipv4.conf.default.rp_filter = 0 net.ipv4.conf.eth0.rp_filter = 0 net.ipv4.ip_nonlocal_bind = 1 由于默认情况下nginx使用4层代理后后端收到的客户端ip是代理服务器的ip,所以在nginx里添加上proxy_bind $remote_addr transparent开启透明代理,之后配置好iptables和后端服务器的路由之后,后端服务器收到的ip仍然不是真实ip,于是又在另一台测试服务器上同样布置了一套系统进行对比排查。在正常情况下,nginx开启proxy_bind $remote_addr transparent后,在与上游服务器建立tcp连接时会使用linux系统调用将数据包的源地址改为$remote_addr,即客户端真实ip,在测试服务器上进行抓包时发现能够抓取到源地址为真实ip、目的地址为上游服务器ip的数据包,并且测试服务器的上游能够成功获取到真实ip,但是在正式服务器上抓取不到,并且更换haproxy使用相同的原理时也是一样的情况,遂怀疑不是nginx的原因而是系统的原因,进一步使用strace跟踪nginx子进程的系统调用时结果如下: accept4(8, {sa_family=AF_INET, sin_port=htons(42254), sin_addr=inet_addr("103.77.XX.XX")}, [112 => 16], SOCK_CLOEXEC|SOCK_NONBLOCK) = 38 setsockopt(38, SOL_TCP, TCP_NODELAY, [1], 4) = 0 socket(AF_INET, SOCK_STREAM|SOCK_CLOEXEC, IPPROTO_IP) = 39 setsockopt(39, SOL_IP, IP_TRANSPARENT, [1], 4) = 0 setsockopt(39, SOL_IP, IP_BIND_ADDRESS_NO_PORT, [1], 4) = 0 bind(39, {sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("103.77.XX.XX")}, 16) = 0 connect(39, {sa_family=AF_INET, sin_port=htons(80), sin_addr=inet_addr("10.0.9.2")}, 16) = -1 EINPROGRESS (Operation now in progress) accept4(8, 0x7ffd1f351110, [112], SOCK_CLOEXEC|SOCK_NONBLOCK) = -1 EAGAIN (Resource temporarily unavailable) getsockopt(39, SOL_SOCKET, SO_ERROR, [0], [4]) = 0 setsockopt(39, SOL_TCP, TCP_NODELAY, [1], 4) = 0 recvfrom(14, "\27\3\3\0M\320x8\16N$\316_\t(O\343\300\310NE\321\330\340\244\375\373\3556Bij"..., 16384, 0, NULL, NULL) = 82 recvfrom(15, "\27\3\3/\353\223e\313\4 \32\2702\2617\2401\346\207\r=\216\227/=y\255EMO\350Q"..., 16384, 0, NULL, NULL) = 12272 可以看到nginx已经调用了linux的bind函数来绑定客户端真实ip并向上游服务器发起连接,但是为什么抓包后的结果仍然是源地址为代理服务器的内网ip,不知道如何排查下去了,希望有大佬能知道原因的或者给个排查的思路
尝试通过 Set-Cookie 标头设置 cookie 的操作被禁止了,因为此标头的"Domain"属性对当前的主机网址而言无效 VUE 项目,proxy 配置如下: devServer: { // 方式一 proxy:process.env.VUE_APP_API_BASE_URL // 方式二 // proxy:{ // '/': { // target:process.env.VUE_APP_API_BASE_URL, // changeOrigin: true // } }, proxy 是生效的,请求也能正常发出,但是因为相应表头Set-Cookie 中包含 Domain=haier.net,导致线上运行没问题,本地运行就会有这个错误提示:尝试通过 Set-Cookie 标头设置 cookie 的操作被禁止了,因为此标头的"Domain"属性对当前的主机网址而言无效。 "image.png" (https://wmlx-new-image.oss-cn-shanghai.aliyuncs.com/images/20241025/6c185245bf8e82c4648c7891cc0f36e0.png) 我的理解因为Domain的值和浏览器当前地址栏的地址不匹配造成的,但通过 proxy 代理就是为了在本地调试,肯定是localhost 而不是他返回的线上地址呀,这个应该怎么解决?