Windows下Nginx安装、使用
一、下载Nginx
下载地址:http://nginx.org/en/download.html
下载windos版的直接解压即可
二、启动Nginx的方法
一、直接打开nginx.exe,弹窗会关闭,其实已经启动,在进程中可以看到。
二、打开CMD、切换到nginx解压目录下,执行命令 nginx.exe 或者 start nginx。
三、检查是否启动成功,如果没有修改nginx.conf文件,直接打开浏览器访问http://localhost:80即可,出现以下内容即成功。
三、关闭Nginx
1、可以直接在进程中关闭。
2、打开CMD,切换到Nginx的目录下,执行命令nginx -s stop(快速停止nginx) 或 nginx -s quit(完整有序的停止nginx)
四、使用Nginx整合Springboot跨域实现前后端分离
使用Nginx反向代理,可以解决跨域无权和Session丢失的问题,十分方便。
一、找到nginx.conf文件
修改配置文件
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
#前端页面服务器
server {
#监听端口和域名
listen 80;
server_name localhost;
#添加头部信息
proxy_set_header Cookie $http_cookie;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#添加拦截路径和代理地址
location /sys/ {
proxy_pass http://localhost:8080/; #注意:使用代理地址时末尾记得加上斜杠"/"。
}
#添加拦截路径和根目录
location / {
root html/fslayui; #注意:使用"/"拦截全路径的时候记得放在最后。
index index.html index.htm; #index表示首页
}
}
}
二、部署前端文件
可以直接将静态资源(例如前端页面)部署到Nginx的html目录。在Nginx/html目录下创建一个名为fslayui的文件夹,并添加一个页面(index.html)用于跨域访问测试,index页面内容如下:
注意:下面的url地址的IP和端口需要与你nginx.conf配置的server中nginx的域名和端口一致(例如本文配置的是localhost:80),因为你是访问的是Nginx服务器
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<title>Page Index</title>
</head>
<body>
<h2></h2>
<p id="test"><p/>
</body>
<script src="js/jquery.js"></script>
<script> $.ajax({ url: 'http://localhost:80/sys/user/login', type: "POST", success: function (data) { $.ajax({ url: 'http://localhost:80/sys/user/login', type: "POST", success: function (data) { $("#test").html("Success:" + data); } }); }, error: function (data) { $("#test").html("跨域失败!!"); } }); </script>
</html>
三、编写Controller访问
注意:后台启动端口需要与nginx.conf中设置的location中的proxy_pass一致。
@SpringBootApplication
@RestController
@RequestMapping("/user/")
public class SpringBootNginxApplication {
//提供验证码
@RequestMapping("login")
public String verifyCode(HttpServletRequest request) {
request.getSession().setAttribute("test", "nginx");
return request.getSession().getId() + ":" + request.getSession().getAttribute("test");
}
public static void main(String[] args) {
SpringApplication.run(SpringBootNginxApplication.class, args);
}
}
四、访问Nginx代理服务器配置的地址
http://localhost:80/index.html
五、Nginx跨域总结
Nginx VS CORS
简单来说,Nginx是间接跨域,而CORS则实现了直接跨域。Nginx的反向代理“欺诈了”浏览器,所以浏览器和服务器都认为是同源访问,所以Session不会丢失。(PS:如果发生跨域访问,服务器会每次都创建新的Session,所以才造成了前后端分离的Session丢失问题。) 至于CORS这种跨域机制的安全性和灵活性更高,但需要自己解决跨域访问Session丢失的问题,通常情况可以采用Session+Redis来实现Session共享。)
本文参考:https://www.cnblogs.com/endv/p/12655866.html
https://www.jianshu.com/p/520021853827
还没有评论,来说两句吧...