美文网首页
php第2课:用nginx反向代理

php第2课:用nginx反向代理

作者: 启蒙时代 | 来源:发表于2019-03-30 08:13 被阅读0次

php第2课:用nginx反向代理

时间 2019-04-01

主讲 刘培富

地点 在线分享,大家自学


前一课,搭建了php的服务器环境,没有这一课,服务器也可以正常使用了。但是,很多情况,会遇一些难题,而nginx可以解决这些难题,让网站的服务器环境更加可靠、更加安全、管理更加便利。

1,什么是nginx?

nginx是一款高性能的web反向代理服务(无缓存反向代理),支持5万个并发响应,可以做简单的负载均衡(轻量级)和容错。

一般情况下,IIS在并发达到200个时,就出现明显的请求排队现象。

使用nginx的优势:方便配置ssl,负载均衡,反爬虫

官网:

http://nginx.org/en/download.html

建议下载1.15版本

nginx-1.15.8.zip    大小:1.5MB


2,nginx.conf文件的配置:

只需要配置这一个文件即可。

nginx.conf包含三部分,即:全局块、events块、http块。

http块,又包含两部分:全局块,server块。server块可以有多个。

举例(nginux v1.15.8),范本如下:

#user nobody;

worker_processes  1;

#error_log  logs/error.log;

#error_log  logs/error.log  notice;

#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

events {

    worker_connections  1024;

}

http {

    include      mime.types;

    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

    #                  '$status $body_bytes_sent "$http_referer" '

    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;

    #tcp_nopush    on;

    #keepalive_timeout  0;

    keepalive_timeout  65;

    #gzip  on;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

                              '$status $body_bytes_sent "$http_referer" '

                              '"$http_user_agent" "$http_Host"';

    server {

        listen      1600;

        server_name  bjn.cn;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {

            root  E:\web;

            index  index.asp index.html index.htm;

        }

        error_page  404  =  /error/error.html;

        #redirect server error pages to the static page /error/error2.html

        #

        error_page  500 502 503 504  /50x.html;

        location = /50x.html {

            root  error;

        }

        location ~ \.asp$ {       

            proxy_pass  http://10.0.11.6:1601;

if ($http_user_agent ~* "YisouSpider|Spider4") {

return 403;

}

        }

        error_log    logs/error20190212.log    error;

        access_log    logs/access20190212.log    main;

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80

        #

        #location ~ \.php$ {

        #    proxy_pass  http://127.0.0.1;

        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

        #

        #location ~ \.php$ {

        #    root          html;

        #    fastcgi_pass  127.0.0.1:9000;

        #    fastcgi_index  index.php;

        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;

        #    include        fastcgi_params;

        #}

        # deny access to .htaccess files, if Apache's document root

        # concurs with nginx's one

        #

        #location ~ /\.ht {

        #    deny  all;

        #}

    }

    # another virtual host using mix of IP-, name-, and port-based configuration

    #

    #server {

    #    listen      8000;

    #    listen      somename:8080;

    #    server_name  somename  alias  another.alias;

    #    location / {

    #        root  html;

    #        index  index.html index.htm;

    #    }

    #}

    # HTTPS server

    #

    #server {

    #    listen      443 ssl;

    #    server_name  localhost;

    #    ssl_certificate      cert.pem;

    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;

    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;

    #    ssl_prefer_server_ciphers  on;

    #    location / {

    #        root  html;

    #        index  index.html index.htm;

    #    }

    #}

}

3,使用方法(命令):

cd到目录,start nginx启动

nginx -v查看Nginx版本

nginx -s stop 停用Nginx

nginx -s quit 停用Nginx(处理完正在进行中请求后停用)

nginx -s reload 重新加载配置,重启进程

nginx -s reopen 重启日志文件

4,利用user_agent进行反爬虫

常见网页返回状态码如下:

200 #请求成功,即服务器返回成功301 #永久重定向302 #临时重定向403#禁止访问,一般是服务器权限拒绝

400 #错误请求,请求中有语法问题,或不能满足请求。

403 #服务器权限问题导致无法显示

404 #服务器找不到用户请求的页面500#服务器内部错误,大部分是服务器的设置或内部程序出现问题

501 #没有将正在访问的网站设置为浏览器所请求的内容

502 #网关问题,是代理服务器请求后端服务器时,后端服务器不可用或没有完成 相应网关服务器,这通常是反向代理服务器下面的节点出问题导致的。503 #服务当前不可用,可能是服务器超载或停机导致的,或者是反向代理服务器后面没有可以提供服务的节点。504#网关超时,一般是网关代理服务器请求后端服务器时,后端服务器没有在指定的时间内完成处理请求,多数是服务器过载导致没有在特定的时间内返回数据给前端代理服务器。

505 #该网站不支持浏览器用于请求网页的HTTP协议版本(最为常见的是HTTP/1.1)

5,隐藏nginx的版本号:

日志记录,详细教程参考:

https://www.cnblogs.com/czlun/articles/7010591.html

经过前面的设置和调试,利用nginx已实现:

1,反向代理,端口监听和服务,多端口监听(iis和apache同时)

2,记录访问日志和错误日志

3,SSL,即https访问

4,错误转向

5,反爬虫策略

本课程的内容,需要对网站服务器部署有一定基础,重在动手调试。

相关文章

网友评论

      本文标题:php第2课:用nginx反向代理

      本文链接:https://www.haomeiwen.com/subject/krzdbqtx.html