nginx目前主要用来做反向代理和负载均衡,其实它也可以是一个web服务器;

1、反向代理:

location /api/ {
proxy_next_upstream error timeout http_503 http_502 http_504;
proxy_pass http://myweb1-server/api/;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;

}

2、七层的负载均衡:

upstream web1 {
server 127.0.0.1:111 weight=1;
server 127.0.0.1:222 weight=1;
}
upstream web2 {
server 127.0.0.2:111 weight=1;
server 127.0.0.2:222 weight=6;
server 127.0.0.2:333 weight=7;
}

3、nginx中root与alias的区别:

1、root的处理结果是:root路径+location路径
alias的处理结果是:使用alias路径替换location路径

例如:location /a/{

root /data/www;

}

访问http://dlgde.cn/a/page.html,root会对应到资源/data/www/a/page.html,也就是root路径+location路径;

而location /a/{

alias /data/www;

}

同样请求http://dlgde.cn/a/page.html,请求资源查找路径是 /data/www/page.html,不管location怎默写,都是去alias指定的路径。

2其他区别:

  1. alias 只能作用在location中,而root可以存在server、http和location中。
  2. alias 后面必须要用 “/” 结束,否则会找不到文件,而 root 则对 ”/” 可有可无

详情参考;

4、获取客户端的真实ip

跟proxy_set_header配置有关,具体参考。经过反向代理设置以后,真正的客户端的ip是取X-Forwarded-For中第一个非unknown的有效IP字符串。

5、nginx手机跳转设置,

加个条件判断,是手机请求,就rewrite到手机相应的网址。例如:

location / {
if ($http_user_agent ~* "(Android|iPhone|iPod|Symbian|BlackBerry|Windows Phone|Mobile|J2ME)") {
rewrite ^ http:stage01.dlgde.cn permanent;
}
root /data/www/stage01/dlgde/;
index index.html index.htm;
try_files $uri $uri/ /index.html;
expires 5;
}

6、nginx中的try_files 使用:

如5中提到的,这个指令,其作用是按顺序检查文件是否存在,返回第一个找到的文件或文件夹(结尾加斜线表示为文件夹),如果所有的文件或文件夹都找不到,会进行一个内部重定向到最后一个参数。但最后一个一定不能为空,不然会进入死循环而报500的错误,参考

7、nginx中的if是个坑:

nginx的配置中不支持if条件的逻辑与/逻辑或运算 ,并且不支持if的嵌套语法,例子查看

8、nginx和php网页结合

访问的时候会出现下载源文件的问题,这是因为nginx本身不能解析php的文件,需要在nginx中改一下配置,把下面这个加上。

location ~ \.php$ {
fastcgi_pass 127.0.0.1:;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

上面这个配置其实也还是说最后还是需要一个php的服务来解析,先装一个php-fpm,具体安装参考,其实安装好了还是有很多坑的,因为当你把php-fpm的服务启动的时候,你发现还是不能访问,并且发现9000端口并没有启动,其实看下php-fpm的配置文件就知道了/etc/php7.2/fpm/pool.d/www.conf     里面listen = /var/run/php7.2-fpm.sock,发现监听的不是9000端口。改为listen = 9000,然后重启php-fpm的服务,9000端口正常启动,但是访问的时候说File not find,看来是文件没有找到。检查“location ~ .php$ {”配置项,发现了一行“fastcgi_param”的配置,然后将其改成了nginx的默认web目录(本机是/usr/share/nginx/html/),再次重启nginx服务后,发现可以进行访问了。如:

fastcgi_param  SCRIPT_FILENAME  /data/www/nginx/html$fastcgi_script_name;

nginx配合php还是比较坑的!

其他待记录。。。

nginx问题相关记录的更多相关文章

  1. Nginx Rewrite相关功能

    目录 Nginx Rewrite相关功能 ngx_http_rewrite_module模块指令: if指令: set指令: break指令: return指令: rewrite_log指令: rew ...

  2. [Android学习笔记]理解焦点处理原理的相关记录

    焦点处理相关记录 以下所涉及的焦点部分,只是按键移动部分,不明确包含Touch Focus部分 需解决问题 控件的下一个焦点是哪? 分析思路 当用户通过按键(遥控器等)触发焦点切换时,事件指令会通过底 ...

  3. Nginx http相关常用配置总结

    Nginx http相关常用配置总结   by:授客  QQ:1033553122   测试环境 nginx-1.10.0 client_max_body_size Syntax: client_ma ...

  4. 关于视觉跟踪中评价标准的相关记录(The Evaluation of Visual Tracking Results on OTB-100 Dataset)

    关于视觉跟踪中评价标准的相关记录(The Evaluation of Visual Tracking Results on OTB-100 Dataset) 2018-01-22  21:49:17 ...

  5. Nginx Rewrite相关功能-防盗链

    Nginx Rewrite相关功能-防盗链 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.

  6. Nginx Rewrite相关功能-rewrite指令

    Nginx Rewrite相关功能-rewrite指令 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.

  7. Nginx Rewrite相关功能-ngx_http_rewrite_module模块指令

    Nginx Rewrite相关功能-ngx_http_rewrite_module模块指令 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.

  8. Dockerfile + Nginx.conf文件记录(用于前端项目部署)

    Dockerfile + Nginx.conf文件记录(用于前端项目部署) 本教程依据个人理解并经过实际验证为正确,特此记录下来,权当笔记. 注:基于linux操作系统(敏感信息都进行了处理),默认服 ...

  9. Nginx location相关配置说明

    Nginx location相关配置说明       基于不同的IP.不同的端口以及不用得域名实现不同的虚拟主机,依赖于核心模块ngx_http_core_module实现. 新建PC web站点 [ ...

随机推荐

  1. git完全cli指南之详细思维导图整理分享

    一直以来都觉得 在开发过程中 能用命令行的还是用命令行 能用快捷键的就要快捷键 前期可能要点学习成本 但是熟练后带来的好处还是非常可观的 所以一直坚持使用命令行的方式来使用git 基本上每个操作都能心 ...

  2. centos6.8 配置mysql赋予mysql远程连接权限

    1.关掉防火墙 2.检查3306端口是否开放 3.修改用户用户权限 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '您的数据库密码' ...

  3. 软件工程(FZU2015) 赛季得分榜,第一回合

    SE_FZU目录:1 2 3 4 5 6 7 8 9 10 11 12 13 积分规则 积分制: 作业为10分制,练习为3分制:alpha30分: 团队项目分=团队得分+个人贡献分 个人贡献分: 个人 ...

  4. (转)JMeter学习逻辑控制器

    JMeter中的Logic Controller用于为Test Plan中的节点添加逻辑控制器. JMeter中的Logic Controller分为两类:一类用来控制Test Plan执行过程中节点 ...

  5. 【zabbix教程系列】二、zabbix特点

    一.度量收集 从任何设备,系统,应用上收集指标,收集指标的方法有: 多平台zabbix代理 SNMP and IPMI 代理 无代理监控用户服务 自定义方法 计算和聚合 用户端web监控  二.问题发 ...

  6. OOM分析工具

    OOM (OutOfMemoryError) 1.MAT工具 在eclipse中安装.Help>Eclipse Marketplace 搜索MAT 接下来运行程序,run configratio ...

  7. JavaScript实用的工具/类库

    Moment.js//JavaScript日期处理类库. Lodash.js//非常实用的工具库. MD5//加密. Numeral.js//格式化和数字四则运算. Pure.css//CSS模块.

  8. ABP项目概述

    在系统性介绍整个ABP框架之前,我们首先需要对ABP框架有一个大概的了解,ABP框架的全称是:Asp.Net Boilerplate Project(即Asp.Net 的样板项目)顾名思义就是能够通过 ...

  9. 通过CONN_MAX_AGE优化Django的数据库连接

    上周对我们用Django+Django-rest-framework提供的一套接口进行了压力测试.压测的过程中,收到DBA通知——数据库连接数过多,希望我们优化下程序.具体症状就是,如果设置mysql ...

  10. 三、Java多人博客系统-技术架构

    多人博客系统1.0版本,架构和技术还是很简单和很传统的. 1.技术 前端:jsp.html.css.javascript.jquery.easyui.echarts 后端:spring mvc.Hib ...