1. 常用服务器比较
apache:
功能完善,历史悠久,模块支持非常丰富,属于重量级产品,比较耗费内存。缺点:处理每一个php比较费资源,导致如果高并发时会耗费服务器资源无法处理更多请求。
lighttpd:
内存开销低,cpu 占用率低,效能好,模块丰富等特点,轻量级web服务器。
nginx:
省资源,省cpu,在高并发时能够处理更多的请求,高端能达到3万到5万的并发量,还有负载均衡可使用。
2.nginx功能
参考:Nginx解决跨域请求,通俗解释
3.mac安装nginx
安装(可以用 brew 安装)
sudo brew install nginx
查看 nginx 版本
(需要查看nginx安装位置,可以用 find / -name nginx查看)
nginx -v
启动 nginx
nginx
重启
nginx -s reload
参考:mac上安装Nginx详细教程
4.nginx反向代理(请求转发)
(1)修改nginx配置文件:
vi nginx/config/nginx.config
(2)加入代码:
server {listen 443;#监控的端口charset utf-8;server_name 10.xx.xx.xx; #域名:通常格式为www.abc.comssl_certificate /opt/k12/nginx/hsxx.xhedu.sh.cn.pem; ssl_certificate_key hsxx.xhedu.sh.cn.key;ssl_session_timeout 5m; #响应时间ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #解密方法ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_prefer_server_ciphers on; location ^~ /xx/260/ { # ^~/api 表示匹配前缀为api的请求proxy_pass http://10.xx.xx.xx:8801/xx/260/; # 注:proxy_pass的结尾有/, -> 效果:会在请求时将/api/后面的路径直接拼接到后面# proxy_set_header作用:设置发送到后端服务器(上面proxy_pass)的请求头值 # 【当Host设置为 $http_host 时,则不改变请求头的值;# 当Host设置为 $proxy_host 时,则会重新设置请求头中的Host信息;# 当为$host变量时,它的值在请求包含Host请求头时为Host字段的值,在请求未携带Host请求头时为虚拟主机的主域名;# 当为$host:$proxy_port时,即携带端口发送 ex: $host:8080 】proxy_set_header Host $proxy_host; proxy_set_header X-Real-IP $remote_addr; # 在web服务器端获得用户的真实ip 需配置条件① 【 $remote_addr值 = 用户ip 】proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;# 在web服务器端获得用户的真实ip 需配置条件②proxy_set_header REMOTE-HOST $remote_addr;# proxy_set_header X-Forwarded-For $http_x_forwarded_for; # $http_x_forwarded_for变量 = X-Forwarded-For变量}error_page 404 /404.html;location = /40x.html {}error_page 500 502 503 504 /50x.html;location = /50x.html {}}
参考:Nginx 配置反向代理
nginx 配置443端口