Nginx的配置(入門)

系列文章

Nginx的配置(進階):https://segmentfault.com/a/11...javascript

安裝

yum源安裝

$ yum install nginx

源碼安裝

咕咕咕php

操做

清除緩存

$ mv /var/log/nginx/access.log /var/log/nginx/20180816.log
$ kill -USER1 Nginx主進程號  # 讓Nginx從新生成一個新的日誌文件access.log

配置php

增長 EPEL 和 Remi 倉庫

EPEL 指的是 Extra Packages for Enterprise Linux,由 Fedora 社區維護,專門給 RHEL 系的操做系統使用,而且相對於 CentOS 默認的倉庫,更新比較快。
Remi 是基於 EPEL 的針對 PHP 打包的倉庫,更新也很及時。css

$ yum install epel-release

若是VPS商家的系統是精簡的:html

$ yum install http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

安裝Remi倉房:java

$ yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm

接着更新一下系統而且安裝一些必要的軟件:mysql

$ yum update
$ yum install curl vim wget sudo unzip yum-utils

安裝php 7.0.x

指定 PHP 包的版本nginx

$ yum-config-manager --enable remi-php70
$ yum update

安裝一些基本的PHP包:git

$ yum install php-fpm php-mysql php-curl php-gd php-mbstring php-mcrypt php-xml php-xmlrpc php-zip

修改一下/etc/php.inisql

$ sed -i 's/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/' /etc/php.ini

編輯Nginx的配置文件vim

$ vim /etc/nginx/nginx.conf
server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
        root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
        }
       [*] 在此處添加便可
       # 開啓PHP-fpm 模式 
        location ~ \.php$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

重啓php和nginx

$ systemctl restart php-fpm  
$ systemctl restart nginx

參考連接:https://sb.sb/blog/centos-ins...

配置文件相關

location匹配

~      #波浪線表示執行一個正則匹配,區分大小寫
~*     #表示執行一個正則匹配,不區分大小寫
^~     #^~表示普通字符匹配,若是該選項匹配,只匹配該選項,不匹配別的選項,通常用來匹配目錄
=      #進行普通字符精確匹配
@      #"@" 定義一個命名的 location,使用在內部定向時,例如 error_page, try_files

例如:

location / {
        index index.php index.html;
        error_page 404 =200 /404.html;
    }

基於IP的訪問控制

查看配置文件,確保包括了default.d目錄下的配置文件

http {
...
        include /etc/nginx/default.d/*.conf;
...
}

靈活配置,能夠針對不一樣server作不一樣的訪問控制。
而後在default.d目錄下建立訪問控制列表。
假如這裏要添加黑名單,那就建立black.conf:

$ cat black.conf
deny 123.151.43.110;

deny表示禁止,支持通配符和正則。

自動列目錄配置

location / {
    autoindex on;
}

開啓gzip壓縮

$ vim /etc/nginx/nginx.conf
http {
    gzip on;   # 開啓Gzip
    gzip_min_length 1k;    # 不壓縮臨界值,大於1K的才壓縮
    gzip_buffers 4 16k;     
    #gzip_http_version 1.1;
    gzip_comp_level 2;     # 壓縮級別,1-10,數字越大壓縮的越好,時間也越長
    gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;     # 壓縮文件類型
    #gzip_vary on;    # 跟Squid等緩存服務有關 
    gzip_disable "MSIE [1-6]\.";  # 不壓縮IE6
    ...
}

緩存設置

...
proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;
server {
     set $upstream http://ip:port
          location / {
                   proxy_cache my_cache;
                   proxy_pass $upstream;
                }
}
...

Alias配置

$ vim /etc/nginx/nginx.conf
...
        location /htdocs {
                alias /opt/www/alias;
                index index.html;
        }
...

alias只會匹配最右側的路徑。
例如輸入http://www.brownfly.cn/htdocs/index.html,那麼匹配的則是/opt/www/alias/index.html
而不是/opt/www/alias/htdocs/index.html

防盜鏈

基於http_refer防盜鏈配置模塊:

$ vim /etc/nginx/nginx.conf
...
        location ~* .*\.(git|png|jpg|jpeg|swf|fle)$ {
                valid_referers none blocke 127.0.0.1 *.baidu; # 容許文件鏈出的域名白名單
                if ($invalid_referer){
                        #rewrite ^/ http://118.25.89.91/404.html; # 盜鏈返回結果
                        return 403;
                }

基於用戶的訪問控制

身份驗證可用於一些私密目錄。

生成密碼帳戶文件

$ yum install -y httpd-tools
$ cd /etc/nginx/conf.d
$ htpasswd -c -m .htpasswd http1  # 建立http1用戶
輸入密碼
$ htpasswd -m .htpasswd http2  # 建立http2用戶
輸入密碼

修改配置文件

$ vim /etc/nginx/nginx.conf
location /secret {
  auth_basic "test site";
  auth_basic_user_file /etc/nginx/conf.d/.htpasswd;
}
相關文章
相關標籤/搜索