Windows下利用Nginx部署纯前端项目(前后台完全分离项目部署及解决跨域请求后台数据问题)

1.下载nginx

nginx: download

下载稳定版本,以nginx/Windows-1.12.2为例,直接下载 nginx/Windows-1.12.2:

下载后解压,解压后如下:

2.启动nginx

有很多种方法启动nginx

(1)直接双击nginx.exe,双击后一个黑色的弹窗一闪而过

(2)打开cmd命令窗口,切换到nginx解压目录下,输入命令 nginx.exe 或者 start nginx ,回车即可

3.检查nginx是否启动成功

直接在浏览器地址栏输入网址 http://localhost:80,回车,出现以下页面说明启动成功

也可以在cmd命令窗口输入命令 tasklist /fi "imagename eq nginx.exe" ,出现如下结果说明启动成功

nginx的配置文件是conf目录下的nginx.conf,默认配置的nginx监听的端口为80,如果80端口被占用可以修改为未被占用的端口即可。

检查80端口是否被占用的命令是:

netstat -ano | findstr 0.0.0.0:80

 或 

netstat -ano | findstr "80"

4、重启nginx

当我们修改了nginx的配置文件nginx.conf 时,不需要关闭nginx后重新启动nginx,只需要执行命令

nginx -s reload 

即可让改动生效

5.关闭nginx

如果使用cmd命令窗口启动nginx,关闭cmd窗口是不能结束nginx进程的,可使用两种方法关闭nginx

(1)输入nginx命令  nginx -s stop(快速停止nginx)  或  nginx -s quit(完整有序的停止nginx)

(2)使用taskkill   taskkill /f /t /im nginx.exe

6.使用nginx代理服务器做负载均衡

我们可以修改nginx的配置文件nginx.conf 达到访问nginx代理服务器时跳转到指定服务器的目的,即通过proxy_pass 配置请求转发地址,即当我们依然输入http://localhost:80 时,请求会跳转到我们配置的服务器

同理,我们可以配置多个目标服务器,当一台服务器出现故障时,nginx能将请求自动转向另一台服务器,例如配置如下:

当服务器 localhost:8080 挂掉时,nginxnginx能将请求自动转向服务器 192.168.101.9:8080 。上面还加了一个weight属性,此属性表示各服务器被访问到的权重,weight

越高被访问到的几率越高。

7.nginx配置静态资源

将静态资源(如jpg|png|css|js等)放在如下配置的f:/nginx-1.12.2/static目录下,然后在nginx配置文件中做如下配置(注意:静态资源配置只能放在 location / 中),浏览器中访问  http://localhost:80/1.png 即可访问到 f:/nginx-1.12.2/static目录下的 1.png图片

8、nginx反向代理跨域请求后台服务器:

1) 所有页面文件放在Nginx文件目录的html目录下

nginx.conf配置如下:

		// 所有以/blog开头的请求都将转发给后台服务器
		location ~ /blog/ {
            proxy_pass   http://localhost:9999;
        }

页面的接口请求地址如下:

/blog/check_login_status/
        $http({
          method: "POST",
          url: "/blog/check_login_status/",
          data: JSON.stringify(values)
        })
        .then(res => {
            localStorage['token'] = 1;
            this.props.history.replace("/");
        })
        .catch(err => {
            notification["error"]({
                message: '错误图示',
                description:
                  '用户名或密码错误',
            });
        });

此时经过Nginx代理后,所有以/blog开头的请求都将转发给后台服务器。

1) 所有页面文件放在另外一台服务器上,假设服务器地址为http://localhost:6666,则nginx.conf配置如下

        // 所有请求(不以/blog开头的请求)都将转发给前台应用
        location / {
            proxy_pass   http://localhost:6666;
        }
		
		// 所有以/blog开头的请求都将转发给后台服务器
		location ~ /blog/ {
            proxy_pass   http://localhost:9999;
        }

前端代码不变。

### 配置 Nginx 解决前后端分离架构中的 CORS 问题 #### 定义资源共享需求 当前端应用托管在 `https://frontend.example.com`,而后端 API 服务托管在 `https://api.example.com` 时,在未正确配置的情况下,浏览器的安全机制会阻止从前端向后端发起的请求[^2]。 #### 修改 Nginx 配置文件处理 CORS 请求 为了使 Nginx 能够适当地响应来自不同源的 HTTP 请求并允许这些请求访问资源,可以在 Nginx 的站点配置文件中加入特定的头部信息来控制哪些来源可以访问该服务器上的资源: ```nginx server { listen 80; server_name api.example.com; location / { add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type'; if ($request_method = 'OPTIONS') { return 204; } proxy_pass http://backend_server; } } ``` 这段代码设置了三个主要的 CORS 响应头: - `Access-Control-Allow-Origin`: 表明哪个名下的页面被允许发送站HTTP请求。这里设置为通配符表示任何网站都可以访问此接口。 - `Access-Control-Allow-Methods`: 列出了支持的方法列表。 - `Access-Control-Allow-Headers`: 指定了预检请求中携带的额外字段名称[^1]。 对于简单的 GET 或 POST 请求来说,上述配置已经足够;但对于复杂的请求(比如包含自定义 header),还需要特别处理 OPTIONS 方法作为预检请求的一部分,并返回状态码 204 No Content 来告知客户端继续执行实际的操作[^3]。 #### 测试与验证 完成以上更改之后重启 Nginx 并测试新的配置是否生效。可以通过开发者工具查看网络请求详情确认响应头里包含了预期的 CORS 设置项。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值