LNMP下Nginx.conf常用配置项详解

1、允许跨域

当出现403跨域错误的时候 No 'Access-Control-Allow-Origin' header is present on the requested resource时,

需要给Nginx服务器配置以下响应的header参数以解决跨域问题;

add_header 'Access-Control-Allow-Origin' '*';  // *代表允许任何网址请求
add_header 'Access-Control-Allow-Credentials' 'true';    // 设置是否允许发送 cookies
add_header 'Access-Control-Allow-Methods' 'GET,POST,OPTIONS';    // 允许请求的类型

2、Http强制跳转https

方法1,使用return 301重定向:

server{
    listen 80;
    server_name xxx.com;    //你的域名
    return 301 https://$server_name$request_uri;    //重定向
}

或

server{
    if ($scheme = http) {
        return 301 https://$server_name$request_uri;   //重定向   
    }  
} 

方法2,使用rewrite重定向

server{
    listen 80;
    server_name xxx.com;    //你的域名
    rewrite ^(.*)$ https://$host$1 permanent;    //重定向
}

对于returnrewrite的区别,可以阅读这篇文章:Creating NGINX Rewrite Rules

另外:推荐自动生成正确的 Nginx SSL 配置网站(默认开启了 HSTS ):https://mozilla.github.io/server-side-tls/ssl-config-generator/

3、路由转发Localtion详解

指令作用

匹配指定的请求uri(请求uri不包含查询字符串,如http://localhost:8080/test?id=10,请求uri是/test)

语法形式

location   [ = | ~ | ~* | ^~ | @]   /uri/     { configuration }

匹配模式及顺序

匹配方式:普通字符串(literal string)和正则表达式(regular expression),其中 ~ 和 ~* 用于正则表达式, 其他前缀和无任何前缀都用于普通字符串。

匹配顺序:先匹配普通字符串,将最精确的匹配暂时存储;

location   =    /uri        =开头表示精确前缀匹配,只有完全匹配才能生效。

location   ^~   /uri        ^~开头表示普通字符串匹配上以后不再进行正则匹配。

location   ~    pattern     ~开头表示区分大小写的正则匹配。

location   ~*   pattern     ~*开头表示不区分大小写的正则匹配。

location   /uri             不带任何修饰符,表示前缀匹配。

location   /                通用匹配,任何未匹配到其他location的请求都会匹配到。

注意:正则匹配会根据匹配顺序,找到第一个匹配的正则表达式后将停止搜索。普通字符串匹配则无视顺序,只会选择最精确的匹配。

 

常用配置指令alias、root、proxy_pass

1、alias:别名配置,用于访问文件系统,在匹配到location配置的URL路径后,指向alias配置的路径,如:

location /test/ {
  
  alias
/usr/local/; }

请求/test/1.jpg(省略了协议和域名),将会返回文件/usr/local/1.jpg。

如果alias配置在正则匹配的location内,则正则表达式中必须包含捕获语句(也就是括号()),而且alias配置中也要引用这些捕获值。如:

location   ~*   /img/(.+\.(gif|png|jpeg)) {

    alias  /usr/local/images/$1;
}

请求中只要能匹配到正则,比如/img/flower.png  或者  /resource/img/flower.png,都会转换为请求/usr/local/images/flower.png

 

2、root:根路径配置,用于访问文件系统,在匹配到location配置的URL路径后,指向root配置的路径,并把请求路径附加到其后,如:

location /test/ {

    root /usr/local/;
}

请求/test/1.jpg,将会返回文件/usr/local/test/1.jpg。

 

3、proxy_pass——反向代理配置,用于代理请求,适用于前后端负载分离或多台机器、服务器负载分离的场景,在匹配到location配置的URL路径后,转发请求到proxy_pass配置额URL,是否会附加location配置路径与proxy_pass配置的路径后是否有"/"有关,有"/"则不附加,如:

location /test/ {

     proxy_pass http://127.0.0.1:8080/;
}

请求/test/1.jpg,将会被nginx转发请求到http://127.0.0.1:8080/1.jpg(未附加/test/路径)。

4、Nginx并发、连接数查看方法

通过web界面查看时Nginx需要开启status模块,也就是安装Nginx时加上 --with-http_stub_status_module,然后配置Nginx.conf,在server点里面加入如下内容

location /status {

  stub_status on;
  access_log /usr/local/nginx/logs/status.log;
  auth_basic "NginxStatus";
}

 配置完后重新启动Nginx后,我们可以通过浏览器访问http://localhost/status ,如图:

 参数解析:

参数释义
Active connections 当前 Nginx 正处理的活动连接数
server accepts handled requests 总共处理了467079 个连接 , 成功创建 467079次握手,总共处理了5387526个请求
Reading Nginx读取到客户端的 Header 信息数
Writing  Nginx返回给客户端的 Header 信息数
Waiting  开启 keep-alive 的情况下,这个值等于 active - (reading + writing),意思就是 Nginx 已经处理完正在等候下一次请求指令的驻留连接

 

 

posted @ 2020-11-29 15:38  申文哲  阅读(457)  评论(0编辑  收藏  举报