• 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 已经处理完正在等候下一次请求指令的驻留连接
  • 相关阅读:
    聪明的质检员 (二分)
    分巧克力(二分)
    产生冠军 HDU
    Legal or Not HDU
    确定比赛名次 HDU
    最短路径问题 HDU
    dijkstra算法为什么不能有负边?
    最短路 HDU
    dijkstra算法 模板
    Floyd算法模板--详解
  • 原文地址:https://www.cnblogs.com/wenzheshen/p/14061643.html
Copyright © 2020-2023  润新知