配置實例:
http { ## # Basic Settings ## sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; # server_tokens off; # server_names_hash_bucket_size 64; # server_name_in_redirect off; include /etc/nginx/mime.types; default_type application/octet-stream; ## # SSL Settings ## ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE ssl_prefer_server_ciphers on; ## # Logging Settings ## access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; ## # Gzip Settings ## gzip on; gzip_disable "msie6"; # gzip_vary on; # gzip_proxied any; # gzip_comp_level 6; # gzip_buffers 16 8k; # gzip_http_version 1.1; # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; ## # Virtual Host Configs ## server { listen 8080; # 端口 server_name localhost; # 綁定域名 location ~ .*?\.(js|css|jpg|png|jpeg|less|sass) # 規則 { root /home/uftp/react; # web目錄 expires 3d; # 文件緩存時間 rewrite .*?([^\/\\\]*?\.(js|css|jpg|png|jpeg|less|sass)) /dist/$1 break; # rewrite:指令; .*?([^\/\\])*?\.(js|css|jpg|png|jpeg|less|sass):匹配文件的正則; /dist/$1:($1正則匹配分組1內容,即文件名)重定向的文件路徑 } location / { root /home/uftp/react; try_files $uri /index.html; # try_files:檢查文件; $uri:監測的文件路徑; /index.html:文件不存在重定向的新路徑 index index.html index.htm index.php; } } include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; }
location規則
~ #波浪線表示執行一個正則匹配,區分大小寫
~* #表示執行一個正則匹配,不區分大小寫
^~ #^~表示普通字符匹配,如果該選項匹配,只匹配該選項,不匹配別的選項,一般用來匹配目錄
= #進行普通字符精確匹配
@ #"@" 定義一個命名的 location,使用在內部定向時,例如 error_page, try_files
首先匹配 =,其次匹配^~, 其次是按文件中順序的正則匹配,最后是交給 / 通用匹配。當有匹配成功時候,停止匹配,按當前匹配規則處理請求。
rewrite指令
語法:rewrite regex replacement [flag];
默認值:無
作用域:server,location,if
如果一個URI匹配指定的正則表達式regex,URI就按照replacement重寫。
rewrite按配置文件中出現的順序執行。flags標志可以停止繼續處理。
如果replacement以"http://"或"https://"開始,將不再繼續處理,這個重定向將返回給客戶端。
flag可以是如下參數
last 停止處理后續rewrite指令集,然后對當前重寫的新URI在rewrite指令集上重新查找。
break 停止處理后續rewrite指令集,並不在重新查找,但是當前location內剩余非rewrite語句和location外的的非rewrite語句可以執行。
redirect 如果replacement不是以http:// 或https://開始,返回302臨時重定向
permant 返回301永久重定向