2024.3.22 使用nginx在window下运行前端页面

本文介绍了如何在Windows环境下下载、安装Nginx1.24版本,以及如何配置和使用它来运行前端项目,解决本地开发时的跨域问题,只需将HTML文件放在特定文件夹并启动Nginx服务。

2024.3.22 使用nginx在window下运行前端页面

使用nginx可以在本地运行前端程序,解决本地前后端程序跨域问题,是个前期编程及测试的好办法。

nginx下载

直接在官网下载
在这里插入图片描述
本次选择了1.24版本(stable version)
在这里插入图片描述

nginx安装

解压后将其解压后放在没有中文的目录下即可,注意必须没有中文。
在这里插入图片描述

nginx使用

将html文件放在html文件夹即可。点击nginx.exe文件运行。
在这里插入图片描述
在127.0.0.1(localhost)中运行即可。
在这里插入图片描述

[root@yfw ~]# cd /www/wwwroot/szrengjing.com/jsxc [root@yfw jsxc]# ls -la total 2356 drwxr-xr-x 17 www www 4096 Nov 11 14:37 . drwxr-xr-x 31 www www 4096 Nov 12 00:46 .. -rw-r--r-- 1 www www 23436 Aug 9 2024 CHANGELOG.md -rw-r--r-- 1 www www 3222 Aug 9 2024 CODE_OF_CONDUCT.md -rw-r--r-- 1 www www 515 Aug 9 2024 .commitlintrc.json -rw-r--r-- 1 www www 251 Aug 9 2024 CONTRIBUTING.md -rw-r--r-- 1 www www 720 Aug 9 2024 custom.d.ts -rw-r--r-- 1 www www 298 Nov 11 09:01 deploy.sh drwxr-xr-x 9 www www 4096 Nov 12 01:32 dist -rw-r--r-- 1 www www 261 Aug 9 2024 .editorconfig -rw-r--r-- 1 www www 6846 Aug 9 2024 .eslintrc.js drwxr-xr-x 6 www www 4096 Aug 9 2024 example -rw-r--r-- 1 www www 217 Aug 9 2024 .fantasticonrc.js drwxr-xr-x 2 www www 4096 Aug 9 2024 fonts drwxr-xr-x 8 www www 4096 Nov 10 15:00 .git drwxr-xr-x 4 www www 4096 Aug 9 2024 .github -rw-r--r-- 1 www www 141 Aug 9 2024 .gitignore drwxr-xr-x 6 www www 4096 Aug 9 2024 images -rw-r--r-- 1 www www 1184795 Nov 10 11:11 jsxc-master.zip -rw-r--r-- 1 www www 2859 Aug 9 2024 karma.conf.js -rw-r--r-- 1 www www 180 Aug 9 2024 .lgtm.yml -rw-r--r-- 1 www www 1110 Aug 9 2024 LICENSE drwxr-xr-x 2 www www 4096 Aug 9 2024 locales drwxr-xr-x 1062 www www 36864 Nov 11 22:39 node_modules -rw-r--r-- 1 www www 302 Aug 9 2024 .npmignore -rw-r--r-- 1 www www 5138 Nov 10 17:38 package.json -rw-r--r-- 1 www www 593471 Nov 10 17:38 package-lock.json -rw-r--r-- 1 www www 79 Aug 9 2024 .prettierrc.json -rw-r--r-- 1 www www 2116 Aug 9 2024 README.md drwxr-xr-x 2 www www 4096 Aug 9 2024 scripts drwxr-xr-x 5 www www 4096 Aug 9 2024 scss drwxr-xr-x 2 www www 4096 Aug 9 2024 sound drwxr-xr-x 11 www www 4096 Aug 9 2024 src -rw-r--r-- 1 www www 498 Aug 9 2024 .stylelintrc drwxr-xr-x 4 www www 4096 Aug 9 2024 template drwxr-xr-x 4 www www 4096 Aug 9 2024 test -rw-r--r-- 1 www www 918 Aug 9 2024 tsconfig.json drwxr-xr-x 2 www www 4096 Aug 9 2024 .vscode -rw-r--r-- 1 www www 8753 Nov 10 14:59 webpack.config.js -rw-r--r-- 1 www www 408244 Aug 9 2024 yarn.lock [root@yfw jsxc]# 用终端命令 来测试吧
最新发布
11-13
我们已经确认了 JSXC 的 `dist/` 目录结构完整,现在我们将 **通过终端命令逐项测试关键服务是否正常**,确保前端能成功连接。 --- ## ✅ 目标:验证从浏览器到 XMPP 服务器的全链路连通性 我们将按以下顺序测试: 1. ✅ 静态文件能否访问(Nginx) 2. ✅ WebSocket 路径是否可达 3. ✅ Prosody WebSocket 服务是否运行 4. ✅ DNS 和 SSL 是否正确 5. ✅ 模拟登录流程(JID 格式 + 密码) --- ### 🔧 测试 1:检查 Nginx 是否正确提供 JSXC 静态资源 运行以下 `curl` 命令测试关键文件是否存在且可访问: ```bash # 测试 index.html curl -I https://szrengjing.com/jsxc/dist/index.html # 测试 JS bundle curl -I https://szrengjing.com/jsxc/dist/jsxc.bundle.min.js # 测试 CSS 文件 curl -I https://szrengjing.com/jsxc/dist/styles/jsxc.min.css ``` ✅ 正常响应应为: ``` HTTP/2 200 server: nginx content-type: text/html ``` ❌ 如果返回 `404 Not Found` 或超时,请检查: - `/www/wwwroot/szrengjing.com/jsxc/dist/` 下的文件权限 - Nginx 配置中 `root` 是否指向正确的路径 --- ### 🔧 测试 2:检查 WebSocket 端点是否开放(使用 `wscat`) 我们需要安装 `wscat` 来测试 WSS 连接。 #### 安装 wscat(Node.js 工具): ```bash npm install -g wscat ``` #### 测试连接到 XMPP WebSocket: ```bash wscat -c wss://szrengjing.com/xmpp-websocket ``` 👉 成功示例输出: ``` Connected (press CTRL+C to quit) < <?xml version=&#39;1.0&#39;?> < <stream:stream xmlns:stream=&#39;http://etherx.jabber.org/streams&#39; xmlns=&#39;jabber:client&#39; id=&#39;abcd1234&#39; from=&#39;szrengjing.com&#39; version=&#39;1.0&#39; xml:lang=&#39;en&#39;> ``` 🎉 表示:**Prosody 接受连接,WebSocket 正常!** ❌ 失败可能原因: - `net::ERR_CONNECTION_TIMED_OUT` → Nginx 未代理 `/xmpp-websocket` - `403 Forbidden` → `cross_domain_websocket` 限制 - `Upgrade required` → Nginx 缺少 `upgrade` 头 --- ### 🔧 测试 3:本地直接连接 Prosody 的 WebSocket 端口(绕过 Nginx) 有时 Nginx 会拦截问题。我们可以先测试本地是否通。 查看 Prosody 是否监听 `5280`: ```bash sudo netstat -tuln | grep 5280 ``` 预期输出: ``` tcp6 0 0 :::5280 :::* LISTEN ``` 然后用 `wscat` 连接本地端口(假设 Prosody 监听在 localhost:5280): ```bash wscat -c ws://localhost:5280/xmpp-websocket ``` 如果这能连上,但外部 `wss://szrengjing.com/xmpp-websocket` 不行 → 说明是 **Nginx 配置问题** --- ### 🔧 测试 4:检查 Nginx 是否正确代理 WebSocket 请运行以下命令查看你的 Nginx 配置中是否有如下内容: ```bash grep -A 10 "location /xmpp-websocket" /www/server/panel/vhost/nginx/szrengjing.com.conf ``` 或通用路径: ```bash grep -r "/xmpp-websocket" /etc/nginx/ /www/server/panel/vhost/nginx/ ``` 你应该看到类似: ```nginx location /xmpp-websocket { proxy_pass http://127.0.0.1:5280; 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_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } ``` ⚠️ 必须包含: - `Upgrade` 和 `Connection: upgrade` - `proxy_http_version 1.1` 否则 WebSocket 升级失败! --- ### 🔧 测试 5:DNS 与 SSL 是否生效 ```bash # 测试域名解析 dig szrengjing.com +short # 应返回你的服务器 IP ``` ```bash # 测试 HTTPS 是否可用 curl -vI https://szrengjing.com --connect-timeout 10 ``` ✅ 应看到: - `HTTP/2 200` - `subject: CN=szrengjing.com` - TLS 握手成功 --- ### 🔧 测试 6:确认用户账号存在(Prosody 内部验证) 进入 Prosody 容器或主机,检查用户是否存在: ```bash sudo prosodyctl listusers szrengjing.com ``` 输出示例: ``` admin@szrengjing.com user1@szrengjing.com ``` 如果没有输出,说明你还没创建账号: ```bash sudo prosodyctl register admin szrengjing.com yourpassword ``` --- ### 🔧 测试 7:强制刷新浏览器缓存并重新加载页面 有时候浏览器缓存了旧的 JS 请求列表。 在终端模拟请求最新 HTML: ```bash curl -s https://szrengjing.com/jsxc/dist/index.html | grep -i "jsxc.bundle.min.js" ``` ✅ 输出应只包含: ```html <script src="jsxc.bundle.min.js"></script> ``` ❌ 不应出现: ```html <script src="jquery.min.js"> <script src="strophe.min.js"> ``` 如果有,说明你没更新 `index.html`! --- ## ✅ 最终修复总结 | 问题 | 解决方法 | |------|----------| | `ERR_CONNECTION_TIMED_OUT` on JS/CSS | 替换 `index.html`,只保留 `jsxc.bundle.min.js` 和 `styles/jsxc.min.css` | | WebSocket 连接失败 | 使用 `wscat` 测试 `wss://szrengjing.com/xmpp-websocket` | | Nginx 代理失败 | 添加 `Upgrade`, `Connection: upgrade` 头 | | 用户无法登录 | 使用 `prosodyctl register` 创建账号 | | 文件 404 | 检查 Nginx `root` 路径和文件权限 | --- ## ✅ 推荐最终操作流程 ```bash # 1. 更新 index.html cat > /www/wwwroot/szrengjing.com/jsxc/dist/index.html << &#39;EOF&#39; <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8" /> <title>JSXC Chat</title> <link rel="stylesheet" href="styles/jsxc.min.css" /> </head> <body style="display:flex;justify-content:center;align-items:center;height:100vh;"> <div> <input type="text" id="jid" placeholder="admin@szrengjing.com" /><br> <input type="password" id="password" placeholder="密码" /><br> <button onclick="login()">登录</button> </div> <div id="app"></div> <script src="jsxc.bundle.min.js"></script> <script> function login() { const jid = document.getElementById(&#39;jid&#39;).value; const password = document.getElementById(&#39;password&#39;).value; window.app = new JSXC({ xmpp: { url: &#39;/xmpp-websocket&#39;, domain: &#39;szrengjing.com&#39;, resource: &#39;web&#39;, jid: jid, password: password }, root: &#39;/jsxc/dist/&#39;, debug: true }); window.app.login(jid, password); } </script> </body> </html> EOF # 2. 设置正确权限 chown -R www:www /www/wwwroot/szrengjing.com/jsxc/dist/ # 3. 重启 Nginx systemctl restart nginx # 4. 测试 WebSocket wscat -c wss://szrengjing.com/xmpp-websocket ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

leigh_chen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值