1.服务端系统对自定义头部的参数需要在Nginx中配置才能生效,如:

set $cors '';
if ($http_origin ~* \.test\.com) {
    set $cors $http_origin;
}
add_header Access-Control-Allow-Origin $cors;
add_header Access-Control-Allow-Credentials true;
add_header Access-Control-Allow-Headers "PARAM1, PARAM2, param1, param2";

※服务端获取该参数的时候需要使用大写或小写方式获取,因为IOS和Android大小写不一样,Android使用param1获取的参数。

2.定时器配置文件最后必须空一行空行防止Nginx执行定时器时报错。

3.vagrant nginx php开发环境中浏览器访问js文件,文件中出现乱码的解决方法

当nginx配置 sendfile设置为on时,某些js文件中会出现奇怪的字符:

�����������������

不管怎么刷新,重启服务都无效;

但是可以通过dos2unix命令修改就可以运行

通过google搜索之后发现原来是因为开启sendfile的原因!

将sendfile设置为off,则不再出现此问题!

这个可能是vagrant造成的吧!

来源:http://www.cnblogs.com/sanshuiqing/p/4512337.html

nginx中配置sendfile及详细说明:https://www.jianshu.com/p/70e1c396c320?utm_campaign

4.配置修改后重载配置文件:nginx -s reload nginx

nginx -t 测试nginx配置是否生效(不生效的情况可能是host没有加或者代理的host没到虚拟机里面加)

(nginx配置文件位置:cd /etc/nginx/conf.d/ )

5.跨域的配置添加:比如API域名中要访问CDN域名中的图片,在CDN的server配置中要添加跨域允许

add_header Access-Control-Allow-Origin *;

6.Server配置文件添加PHP解析代理:

location ~ \.php$ {
        fastcgi_pass   unix:/dev/path/php-fpm.sock;
        fastcgi_index  index.php;
        fastcgi_param  CI_ENV production;
        fastcgi_param  CI_DOMAIN xxx.com;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

7.Nginx 反向代理与正向代理:https://i4t.com/4051.html

负载均衡配置示例:https://blog.csdn.net/qq_31214097/article/details/84782799

(1)、什么是正向代理?什么是反向代理?
正向代理,架设在客户机与目标主机之间,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。

反向代理服务器架设在服务器端,通过缓冲经常被请求的页面来缓解服务器的工作量,将客户机请求转发给内部网络上的目标服务器;并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器与目标主机一起对外表现为一个服务器。

(2)、反向代理有哪些主要应用?
现在许多大型web网站都用到反向代理。除了可以防止外网对内网服务器的恶性攻击、缓存以减少服务器的压力和访问安全控制之外,还可以进行负载均衡,将用户请求分配给多个服务器。

反向代理应用的负载均衡示例:https://www.cnblogs.com/ibigboy/p/11640541.html

多种负载配置方式(权重、ip_hash、least_conn):https://learnku.com/articles/46372

反向代理配置:
1、upstream模块配置服务集群ip+端口,默认负载均衡算法是轮询(即3台机器轮流处理请求);
2、server模块监听80端口;
3、第一个 location 模块将请求后台接口的请求代理到upstream模块配置的服务集群;第二个location模块代理前端静态资源,实现前后端分离。

#服务器集群
upstream team_server {
    server 192.168.11.121:8080;
    server 192.168.11.122:8080;
    server 192.168.11.123:8080;
}
server {
    listen       80;
    server_name  192.168.11.128;

    charset utf-8;

    access_log  D:/mysoft/nginx/logs/access.log  main;
    error_log D:/mysoft/nginx/logs/error.log;

    location ~* /eroly/(.*)(/*.json|/*.do) {
        proxy_pass $scheme://team_server;#upstream的name

        proxy_redirect off;
        proxy_set_header Host                   $host;
        proxy_set_header X-Real-IP              $remote_addr;
        proxy_set_header X-Forwarded-For        $proxy_add_x_forwarded_for;

        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
        proxy_max_temp_file_size 0;
        proxy_connect_timeout      90;
        proxy_send_timeout         90;
        proxy_read_timeout         90;
        proxy_buffer_size          4k;
        proxy_buffers              4 32k;
        proxy_busy_buffers_size    64k;
        proxy_temp_file_write_size 64k;
  }
    location /eroly {
        root D:/static;
        rewrite ^/eroly/(.*?)$ /$1 break;
    }
}

当访问http://192.168.11.128/eroly/home/index.html,nginx会匹配到第二个location;
若访问的URL中以.json或.do结尾如/eroly/login.do时,Nginx会匹配到第一个location模块,将该请求转发给upstream模块的一台服务器进行处理 。
具体转发给哪一台处理,由负载均衡算法决定。
此时服务器充当反向代理服务器。

8.NGINX安装image_filter图片缩放处理模块

// 进到虚拟机,并切换到 root
yum install -y gd-devel gcc libgd
yum install -y nginx-module-image-filter

// 在 /etc/nginx/nginx.conf 文件顶部加入
load_module /usr/lib64/nginx/modules/ngx_http_image_filter_module.so;

9.Nginx配置添加basic认证

ssl_prefer_server_ciphers on;
  
     location / {
        satisfy any;
        allow 127.0.0.0/32;
        deny all;

        auth_basic "Please Enter ID/PW:";
        auth_basic_user_file /var/www/conf/auth.conf;

 	    index index.php;
 	    try_files $uri $uri/ /index.php;
     }

10.Linux N个服务的搭建https://yq.aliyun.com/articles/719612?spm=a2c4e.11155472.0.0.1da1189cq6MEVo

11.Nginx的log日志是否有写入权限,在调试或者异常调查的时候需要查看,如果没有权限就不能跟踪log:

位置路径:/var/log/nginx

-rw-r----- 1 vagrant adm       0 7月   9 2019 access_admin.log
-rw-r--r-- 1 root    root    341 6月  26 2019 access_admin.log-20190627.gz
-rw-r----- 1 www     adm    1182 6月  29 2019 access_admin.log-20190629.gz
-rw-r----- 1 www     adm    1400 7月   1 2019 access_admin.log-20190701.gz
-rw-r----- 1 vagrant adm   14479 7月   2 2019 access_admin.log-20190702.gz
-rw-r----- 1 vagrant adm   24562 7月   3 2019 access_admin.log-20190703.gz
-rw-r----- 1 vagrant adm   11999 7月   3 2019 access_admin.log-20190704.gz
-rw-r----- 1 vagrant adm    5505 7月   4 2019 access_admin.log-20190705.gz
-rw-r----- 1 vagrant adm     743 7月   6 2019 access_admin.log-20190706.gz
-rw-r----- 1 vagrant adm     539 7月   6 2019 access_admin.log-20190707.gz
-rw-r----- 1 vagrant adm    2843 7月   8 2019 access_admin.log-20190708.gz
-rw-r----- 1 vagrant adm   68662 7月   8 2019 access_admin.log-20190709
-rw-r----- 1 vagrant adm       0 4月  22 2019 access_api.log

要检查nginx的log日志文件权限是否为nginx.conf里面执行用户的权限,如果没有对应,可能日志无权限写入。

user  vagrant vagrant;
worker_processes  1;

比如nginx.conf的配置用户是vagrant,只能写入设置为vagrant权限的日志文件。

12.Nginx的缓存和临时文件存储与文件读写权限的问题:

出现权限异常时,异常信息如下:

[crit] 16128#0: *58 open() "/var/lib/nginx/tmp/fastcgi/3/00/0000000003" failed (13: Permission denied) while reading upstream, client: 110.136.225.20, server: api.domain.com, request: "GET /api/servicer/code/115 HTTP/1.1", upstream: "fastcgi://unix:/dev/shm/php-fpm.sock:", host: "api.domain.com", referrer: "https://servicewechat.com/wx3e4b26d5832a6a66/devtools/page-frame.html

nginx的处理过程:

(1).nginx在处理http请求时,如果post、get等提交的数据时,一般会把请求参数先暂存到nginx指定的缓存区。

(2).如果数据过长,数量过大的情况,nginx会把数据先写入到 tmp 临时文件夹的临时文件里面。这时可能会遇到一个系统错误,就是tmp文件夹无编辑权限,导致整个请求失败,返回报文出现空的情况,无任何响应信息,但是请求code可能是OK 200。

(3).解决办法就是变更tmp文件夹的读写权限:chown www:www /var/lib/nginx/tmp;

(4).如果是请求参数过长,请参考此文:https://www.cnblogs.com/onmyway20xx/p/4469202.html

13.阿里云ECS服务器升级后nginx的写入临时目录tmp也会被恢复root或者高级账户的权限,导致项目在上传图片或者处理比较大的数据时候,写入缓存无权限,导致项目运行或者使用出现错误,这时还是要变更文件夹的用户组及用户权限,参考【第12】。

14.查看系统可以打开的文件句柄数是多少:

$ cat /proc/sys/fs/file-max

参考bronk系统最大的并发连接数经验:https://www.cnblogs.com/wenbronk/p/6574942.html