超详细 Nginx 傻瓜教程( 二 )


  • www.javastack.cn/finance/
  • www.javastack.cnproduct/
  • www.javastack.cn/admin/
我们知道,http的默认端口号是80,如果在一台服务器上同时启动这3个 webapp 应用,都用80端口,肯定是不成的 。所以,这三个应用需要分别绑定不同的端口号 。
那么,问题来了,用户在实际访问 www.javastack.cn 站点时,访问不同 webapp,总不会还带着对应的端口号去访问吧 。所以,你再次需要用到反向代理来做处理 。
配置也不难,来看看怎么做吧:
超详细 Nginx 傻瓜教程

文章插图
 

超详细 Nginx 傻瓜教程

文章插图
 
https反向代理配置
一些对安全性要求比较高的站点,可能会使用 HTTPS(一种使用ssl通信标准的安全HTTP协议) 。
这里不科普 HTTP 协议和 SSL 标准 。但是,使用 nginx 配置 https 需要知道几点:
  • HTTPS 的固定端口号是 443,不同于 HTTP 的 80 端口
  • SSL 标准需要引入安全证书,所以在 nginx.conf 中你需要指定证书和它对应的 key
其他和 http 反向代理基本一样,只是在 Server 部分配置有些不同 。
超详细 Nginx 傻瓜教程

文章插图
 
静态站点配置
有时候,我们需要配置静态站点(即 html 文件和一堆静态资源) 。
举例来说:如果所有的静态资源都放在了 /app/dist 目录下,我们只需要在 nginx.conf 中指定首页以及这个站点的 host 即可 。
配置如下:
超详细 Nginx 傻瓜教程

文章插图
 
然后,添加 HOST:
127.0.0.1 static.zp.cn,此时,在本地浏览器访问 static.zp.cn ,就可以访问静态站点了 。
跨域解决方案
web 领域开发中,经常采用前后端分离模式 。这种模式下,前端和后端分别是独立的 web 应用程序,例如:后端是 Java 程序,前端是 React 或 Vue 应用,更多请看这篇文章《到底什么是跨域,及解决方案》 。
各自独立的 web app 在互相访问时,势必存在跨域问题 。解决跨域问题一般有两种思路:
CORS
在后端服务器设置 HTTP 响应头,把你需要运行访问的域名加入加入 Access-Control-Allow-Origin 中 。
jsonp
把后端根据请求,构造json数据,并返回,前端用 jsonp 跨域 。
这两种思路,本文不展开讨论 。
需要说明的是,nginx 根据第一种思路,也提供了一种解决跨域的解决方案 。
举例:www.javastack.cn 网站是由一个前端 app ,一个后端 app 组成的 。前端端口号为 9000,后端端口号为 8080 。
前端和后端如果使用 http 进行交互时,请求会被拒绝,因为存在跨域问题 。来看看,nginx 是怎么解决的吧:
首先,在 enable-cors.conf 文件中设置 cors :
超详细 Nginx 傻瓜教程

文章插图
 
接下来,在你的服务器中 include enable-cors.conf 来引入跨域配置:
超详细 Nginx 傻瓜教程

文章插图
 
到此,就完成了 。

【超详细 Nginx 傻瓜教程】


推荐阅读