当前位置:   article > 正文

Nginx访问本地项目及配置_通过nginx访问本地项目

通过nginx访问本地项目

场景

在H5开发中,有时候有些问题只在线上环境出现,线上环境又不能随便更改代码和配置,比如,我们需要对页面进行重定向,正则匹配转发,那么我们能不能在本地调试就能模拟线上环境页面访问情况呢?

答案是肯定的!那么如何做呢?

 

模拟线上环境页面访问

1、nginx

线上环境使用的是nginx服务器。

Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。它也是一种轻量级的Web服务器,可以作为独立的服务器部署网站(类似Tomcat)。它高性能和低消耗内存的结构受到很多大公司青睐,如淘宝网站架设。

2、安装和部署

(1)下载链接 -> http://nginx.org/en/download.html , 建议选择稳定版

(2)解压后启动。

启动方式有两种:双击nginx.exe,或者 命令行启动。

因为调试过程中需要多次关闭和重启nginx,如果通过nginx双击的方式,可能会造成旧的nginx未关闭,新打开了一个nginx进程(可以打开任务管理器查看),这样会调试结果不准确。因此建议使用命令行。

启动方式:

 

打开解压文件夹路径,按住shift键,右键,选择 “在此处打开命令窗口” 即可快捷打开cmd窗口。

输入命令启动nginix:

start nginx

浏览器打开 http://localhost:80 ,见到welcome to nginx,即启动成功

也可以cmd输入

tasklist /fi "imagename eq nginx.exe"

如下图所示即启动成功

 

3、修改nginx配置

nginx安装启动完毕,我们还需要修改一下配置,这样才能当我们访问线上环境域名时,能指向我们本地的项目文件。

打开nginx文件夹下conf目录的nginx.conf文件进行编辑

  1. server {
  2. listen       80;
  3. server_name 线上环境域名,例如xdh.com;
  4. location / {
  5.       root 本地项目文件地址,例如D:/front/code/xdh,注意这里用的是右斜杠;
  6.       index index.html index.htm;
  7.       autoindex on;
  8. }
  9. }

保存,关闭

4、修改host文件

windows系统,打开host文件,地址:C:\Windows\System32\drivers\etc

 

编辑host文件,添加一个上面nginx配置的线上环境域名

127.0.0.1 xdh.com

5、重启nginx

cmd窗口执行:

  1. //nginx测试是否正常
  2. nginx -t
  3. //重启nginx
  4. nginx -s reload

6、浏览器输入线上环境访问地址,这时访问线上环境地址,实际上访问的就是我们本地项目文件啦!

7、想要模拟线上环境的重定向、转发操作,这时只需要配置上面的nginx.conf就好了。

 

nginx常规配置

重定向rewrite

  1. server {
  2.       listen       80;
  3.       server_name localhost;
  4.        
  5.       #301永久重定向
  6. rewrite ^/static/a.html$ /static/b.html permanent;
  7. #302临时重定向
  8. rewrite ^/static/a.html$ /static/b.html redirect;
  9. location / {
  10. root D:/front/code/xdh;
  11. index index.html index.htm;
  12. autoindex on;
  13. }
  14. }

 

location匹配规则

优先级:

(localtion =) > (localtion完整url) > (localtion ^~) > (localtion ~,~*) > (lcoaltion部分起始路径) > (/)

说明:

  • = 表示精确匹配

  • ^~ 表示指定的路径开头

  • ~ 表示区分大小写的正则匹配

  • ~* 表示不区分大小写的正则匹配

  • / 通用匹配,所有的URL都是以此为开头

例子:

  1. location ^~ /static/ {
  2.   #规则1
  3. }
  4. location ~ \.(gif|jpg|png|js|css)$ {
  5.   #规则2
  6. }
  7. location ~* \.png$ {
  8.   #规则2
  9. }
  10. //http://xdh.com/static/a.png 优先匹配到规则1,则不匹配后面的规则
  11. //http://xdh.com/a.png 匹配到规则2

 

location配置项

  1. location / {
  2.           root   html;
  3.           index index.html index.htm;
  4.            
  5.           #转发后端地址,一般用于做软负载,轮询后端服务器
  6.           #proxy_pass http://localhost:8080;
  7.           #拒绝请求,返回403,一般用于某些目录禁止访问
  8.           #deny all;
  9.            
  10.           #允许请求
  11.           #allow all;
  12.            
  13.           #请求头设置
  14.           add_header 'Access-Control-Allow-Origin' '*';
  15.           add_header 'Access-Control-Allow-Credentials' 'true';
  16.           add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
  17.           add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
  18.           #重新定义或者添加发往后端服务器的请求头
  19.           #给请求头中添加客户请求主机名
  20.           proxy_set_header Host $host;
  21.           #给请求头中添加客户端IP
  22.           proxy_set_header X-Real-IP $remote_addr;
  23.           #将$remote_addr变量值添加在客户端“X-Forwarded-For”请求头的后面,并以逗号分隔。 如果客户端请求未携带“X-Forwarded-For”请求头,$proxy_add_x_forwarded_for变量值将与$remote_addr变量相同  
  24.           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  25.           #给请求头中添加客户端的Cookie
  26.           proxy_set_header Cookie $http_cookie;
  27.           #将使用代理服务器的主域名和端口号来替换。如果端口是80,可以不加。
  28.           proxy_redirect off;
  29.            
  30.           #浏览器对 Cookie 有很多限制,如果 Cookie 的 Domain 部分与当前页面的 Domain 不匹配就无法写入。
  31.           #所以如果请求 A 域名,服务器 proxy_pass 到 B 域名,然后 B 服务器输出 Domian=B 的 Cookie,
  32.           #前端的页面依然停留在 A 域名上,于是浏览器就无法将 Cookie 写入。
  33.            
  34.            #不仅是域名,浏览器对 Path 也有限制。我们经常会 proxy_pass 到目标服务器的某个 Path 下,
  35.           #不把这个 Path 暴露给浏览器。这时候如果目标服务器的 Cookie 写死了 Path 也会出现 Cookie 无法写入的问题。
  36.            
  37.           #设置“Set-Cookie”响应头中的domain属性的替换文本,其值可以为一个字符串、正则表达式的模式或一个引用的变量
  38.           #转发后端服务器如果需要Cookie则需要将cookie domain也进行转换,否则前端域名与后端域名不一致cookie就会无法存取
  39.        #配置规则:proxy_cookie_domain serverDomain(后端服务器域) nginxDomain(nginx服务器域)
  40.           proxy_cookie_domain localhost .testcaigou800.com;
  41.            
  42.           #取消当前配置级别的所有proxy_cookie_domain指令
  43.           #proxy_cookie_domain off;
  44.           #与后端服务器建立连接的超时时间。一般不可能大于75秒;
  45.           proxy_connect_timeout 30;
  46. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/254286
推荐阅读
相关标签
  

闽ICP备14008679号