标签:
最近做项目,前端需要用到nginx反向代理来转发请求,总结了一下在Windows和Mac上的配置,以备查询。
一、Windows
修改nginx的配置文件,nginx.conf。
1)nginx.conf文件,http下,默认打开的server只有一个,监听的是80端口:
1 http{ 2 XXXXX 3 server{ 4 listen 80; 5 XXXX 6 } 7 }
2)我们手动添加一个server(虚拟机),这样本地使用假数据来模拟请求json文件时,不会因为跨域而请求不到。
1 http{ 2 XXXX 3 server{ 4 listen 80; 5 XXXX 6 } 7 server{ 8 # 端口,自己定义,注意不要重名 9 listen 8088; 10 server_name localhost; 11 # Path for static files 项目所在的文件夹,指向编译后的文件夹 12 # 我这里指向的路径是编译后的文件夹,实际指向你要运行html的文件夹都可以 13 root D:\BigCity\americanschool\frontend\output; 14 #Specify a charset 15 charset utf-8; 16 # 开启SSI 17 ssi on; 18 ssi_silent_errors off; 19 # ssi针对所有文件类型生效 20 ssi_types *; 21 22 #转发所有的json文件的请求 23 location ~(.*\.json){ 24 #我这里json文件放的目录和工程目录是同一个,所以root的地址和上面相同;另外,注意,如果用npm 来编译源文件,源文件中的json可能不会生成到output文件夹,需要手动拷贝,才能正常请求到; 25 root D:\BigCity\americanschool\frontend\output; 26 error_page 405 =200 $1; 27 } 28 } 29 }
3)当后端程序部署后,前端联调时,需要把请求都转到实际的后端,需要再次修改ngnix.conf如下:
1 server { 2 # 端口,自己定义,注意不要重名 3 listen 8088; 4 server_name localhost; 5 # Path for static files 项目所在的文件夹,指向编译后的文件夹 6 # 我这里指向的路径是编译后的文件夹,实际指向你要运行html的文件夹都可以 7 root D:\BigCity\americanschool\frontend\output; 8 #Specify a charset 9 charset utf-8; 10 # 开启SSI 11 ssi on; 12 ssi_silent_errors off; 13 # ssi针对所有文件类型生效 14 ssi_types *; 15 # error_log logs/km.error.log warn; 16 #将/test/开头的请求转发到后端服务器 17 #XXXX是你的后端服务器的ip 18 #对应前端js中的ajax的请求是:/rest/aaaaa/bbbbbb 19 location ^~ /rest/ { 20 proxy_pass http://XXXX/rest/; 21 }}
这样配置后,路径D:\BigCity\americanschool\frontend\output下发起的ajax请求,只要是以/rest/开头的,都会被转发到proxy_pass指向的地址,也就是把http://XXXX和ajax访问的url拼接起来,得到:http://XXXX/rest/aaaaa/bbbbbb
二、MAC下的配置
MAC下,安装好的nginx无法在文本编辑器中修改,只能在“终端”查看;并且没有修改的权限;因此,只能先把nignx.conf文件拷贝出来,更改后,再拷贝回去,注意需要使用sudo。
[nginx]Windows和Mac下,nginx反向代理服务器配置
标签:
原文地址:http://www.cnblogs.com/bluebirid/p/5402267.html