web服务器, nginx 及请求代理

集成开发环境:(前端开发还是使用下面单独的web服务器比较好,前后端分离会用到代理的功能)

1、安装xampp时,软件会自动安装 微软的 Microsoft Visual C++ 2008 Redistributable - x86 9.0.21022 这个工具(这个工具有一个bug,安装后会有很多文件安装在E盘根目录下,没有E盘就安装在D盘)。

xampp安装好后,把 Microsoft Visual C++ 2008 Redistributable - x86 9.0.21022工具 卸载了貌似也不影响xampp的使用。(新版的xampp没有这个问题)

2、修改Apache网站根目录htdocs : https://jingyan.baidu.com/article/3aed632e2c5add70108091e4.html

3、wamp实现代理服务器的功能:

    参考: windows通过wamp apache实现代理及反向代理 https://blog.csdn.net/logan_LG/article/details/80862529

4、Apache 服务器 和 PHP 没有关系:https://cloud.tencent.com/info/6f0caac03299907cd564e035d69639de.html

  当Apache收到jason.com/1.php的请求时,通过CGI调用PHP解析程序,解析1.php的动态网页内容,并将字符串返回给用户。所以PHP和Apache 是分开的。

  只是Apache 服务器配置了,用户访问PHP文件,就调用PHP解析程序,执行php代码而已。如果有其他的 XX 语言,Apache 同样可以调用这种 语言的解析程序,执行这种语言的代码。

  php运行依赖apache服务器


web服务器:

一、IIS服务器:(局域网中占有80端口,可以被其它主机访问)

1、启动IIS服务器:默认是关闭这个服务的,https://jingyan.baidu.com/article/0bc808fc5924b01bd485b9e8.html(配置) 或 https://blog.csdn.net/staunchkai/article/details/78975865 (使用)

2、配置IIS服务器的代理功能:https://www.cnblogs.com/gaibianziji/p/10308725.htmlhttps://blog.csdn.net/qq_36750554/article/details/79376527

二、nginx服务器:(局域网中所有端口度可以被其它主机访问,配置代理服务会比较简单)

1、nginx服务器 安装配置

  window系统下https://www.cnblogs.com/loong-hon/p/9060515.html

  启动服务器 两种:

    a、直接双击 nginx.exe 文件运行

    b、nginx服务器目录 下,nginx 命令

  停止服务器:

    a、强制停止 nginx -s stop

    b、等待处理完成后 停止 nginx -s quit

  重启服务器:

    使用命令reopen和reload来重新启动nginx或者重新加载配合着文件

  linux下离线安装:https://blog.csdn.net/ywd1992/article/details/83095855(亲测有效,只要一个 rpm 包就可以了)

    a、安装好后,对应的文件目录 是约定好的。所以没有文档,自己根本就不知道在哪里去配置。

     Nginx默认放置网站文件的目录: cd /usr/share/nginx/html/

     配置文件: /etc/nginx/nginx.conf

2、nginx服务器 代理配置:https://blog.csdn.net/cai454692590/article/details/82763748(单独一个文件管理的)

           或 https://blog.csdn.net/weixin_39537399/article/details/78852648

server {
    listen       8000;
    server_name  localhost;

    location / {
        root   E:/代码仓库/B09_汽车金融综合业务平台/1.开发库/4.源码类/sm-hfi/sm-cdb-web/src/main/webapp;
        index  index.html;
    }

    #下面配置node服务器的地址,服务程序会自动进行代理转发  
    location /api {
        rewrite ^.+api/?(.*)$ /$1 break;
        include uwsgi_params;
        proxy_pass   http://192.168.90.112:3000;
    }  
}

  注意:1、C盘的 root 字段配置的路径,必须是 斜杠;其它盘符的路径可以是反斜杠( Windows使用编辑器复制的路径都是反斜杠的 )。

     2、代理的匹配越精准 越好,不然 如果页面的url 也匹配到 到,就会把 页面url 也给转发了。

       案例【同事出现的问题】:vue-cli 中的 代理就碰到过两次这种 匹配不精准导致的 问题。一次是 下面的代理匹配规则,把上面的匹配规则包含了。导致上面的的代理 一直 是用下面的代理转发,导致错误。

                  另 外一次是 代理的匹配 规则中 把页面 url 页 页 给匹配进去了,导致 页面 url 发送请求时,也被转发处理了,获取不到正确的页面。   

重点配置是 nginx location下的配置详:基本功能配置 https://mp.weixin.qq.com/s/mIbcSTAbokDGhdl77efYdw

  参考:https://blog.csdn.net/lizhiyuan_eagle/article/details/90639448https://blog.csdn.net/tl4832194/article/details/106642981(alias与root的区别)

  a、root真实路径:是 root指定的值 加上 location指定的值。【只有 "/" 路径的 location的文件目录是用root的,其它的都用alias】

  b、alias真实路径:是 alias指定的值,不包含location指定的值了。【一般指定url的话,用alias指定路径,而不是 root】

  c、rewrite:

  d、try_files :

  特殊功能: https://blog.csdn.net/qq_33862644/article/details/79337348

    • 反向代理
    • 重定向
    • 防盗链
    • 设置缓存过期时间
    • 禁止访问某个目录

  总结下: https://mp.weixin.qq.com/s/mIbcSTAbokDGhdl77efYdw

     在顺序上,前缀字符串顺序不重要,按照匹配长度来确定,正则表达式则按照定义顺序。

     在优先级上,= 修饰符最高,^~ 次之,再者是正则,最后是前缀字符串匹配。

server {
    location /doc {
        [ configuration A ] 
    }
    location /docu {
        [ configuration B ] 
    }
}

# 请求 /document 使用 configuration B
# 虽然 /doc 也能匹配到,但在顺序上,前缀字符串顺序不重要,按照匹配长度来确定

nginx 常用配置:【nginx大部分配置可以 在 http、server、localtion 不同的作用域下有效。 功能配置上 我们都希望尽可能 的范围小,不要影响其他的应用。】

  a、上传大文件超时解决办法【nginx可以实现针对,某个接口 配置 上传文件和超时时间的设置】:https://blog.csdn.net/liutong123987/article/details/79301871

  b、nginx如何设置 图片防盗链:https://www.cnblogs.com/viruscih/articles/10669688.html

   c、Nginx针对前端静态资源的缓存处理:https://www.cnblogs.com/hanshuai/p/12002202.html

    缓存服务器是会缓存静态文件的,如果spa的 index.html 要求不能缓存,需要在nginx上配置。

   d、nginx 强缓存、协商缓存配置:https://blog.csdn.net/weixin_43837268/article/details/109195243

nginx 的 其它概念、功能:

1、nginx 批处理 :https://www.cnblogs.com/hope250/p/7892546.html

2、nginx 优雅的重启: https://www.zhangshengrong.com/p/zAaOKJbEad/

  说明:如果nginx要配置新的 web 服务器,配置文件改好后。通过优雅的重启,不会影响已经在nginx中运行的项目。

3、nginx 中 全局变量:https://www.cnblogs.com/yyxianren/p/10815007.html

  • $uri : 不带请求参数的当前URI,$uri不包含主机名,如”/foo/bar.html”。
  • $server_name : 服务器名称。
  • $args:请求中的参数,如www.123.com/1.php?a=1&b=2的$args就是a=1&b=2

4、nginx伪静态之try_files和rewrite讲解: