一 Nginx配置文件
1.1 Nginx主配置
Nginx主配置文件/etc/nginx/nginx.conf是一個純文本類型的文件,整個配置文件是以區塊的形式組織,一般每個區塊以一對大括號{}來表示開始與結束。
提示:若編譯安裝則爲編譯時所指定目錄。
- Main位於nginx.conf配置文件的最高層;
- Main層下能夠有Event、HTTP層;
- Http層下面容許有多個Server層,用於對不一樣的網站作不一樣的配置;
- Server層下面容許有多個Location,用於對不一樣的路徑進行不一樣模塊的配置。
#以下爲全局Main配置:
1 user nginx;
2 worker_processes 1;
3
4 error_log /var/log/nginx/error.log warn;
5 pid /var/run/nginx.pid;
#以下爲Event配置:
1 events {
2 worker_connections 1024;
3 }
#以下爲http配置:
1 http {
2 include /etc/nginx/mime.types;
3 default_type application/octet-stream;
4 log_format main '$remote_addr - $remote_user [$time_local] "$request" '
5 '$status $body_bytes_sent "$http_referer" '
6 '"$http_user_agent" "$http_x_forwarded_for"';
7 access_log /var/log/nginx/access.log main;
8 sendfile on;
9 #tcp_nopush on;
10 keepalive_timeout 65;
11 #gzip on;
12 include /etc/nginx/conf.d/*.conf;
13 }
提示:一般Server配置在獨立的/etc/nginx/conf.d/*.conf中,經過引用的方式調用,以下/etc/nginx/conf.d/default.conf:
1 server {
2 listen 80;
3 server_name localhost;
4 location / {
5 root /usr/share/nginx/html;
6 index index.html index.htm;
7 }
8 error_page 500 502 503 504 /50x.html;
9 location = /50x.html {
10 root /usr/share/nginx/html;
11 }
12 }
1.2 Nginx全局配置
1 user nginx; #進程用戶
2 worker_processes 1; #工做進程,配合和CPU個數保持一致
3 error_log /var/log/nginx/error.log warn; #錯誤日誌路徑及級別
4 pid /var/run/nginx.pid; #Nginx服務啓動的pid
1.3 Nginx events事件配置
1 events {
2 worker_connections 1024; #每一個worker進程支持的最大鏈接數
3 use epoll; #內核模型,select、poll、epoll
4 }
1.4 Nginx公共配置
1 http {
2 include /etc/nginx/mime.types; #指定在當前文件中包含另外一個文件的指令
3 default_type application/octet-stream; #指定默認處理的文件類型能夠是二進制
4
5 log_format main '$remote_addr - $remote_user [$time_local] "$request" '
6 '$status $body_bytes_sent "$http_referer" '
7 '"$http_user_agent" "$http_x_forwarded_for"'; #日誌格式
8
9 access_log /var/log/nginx/access.log main; #訪問日誌
10
11 sendfile on; #優化靜態資源
12 #tcp_nopush on; #nginx不要緩存數據,而是一段一段發送
13
14 keepalive_timeout 65; #給客戶端分配鏈接超時時間,服務器會在這個時間事後關閉鏈接。
15
16 #gzip on; #壓縮
1.5 Nginx server配置
Nginx必須使用虛擬機配置站點,每一個虛擬主機使用一個server。
1 server {
2 listen 80; #監聽端口,默認80
3 server_name localhost; #提供服務的域名或主機名
4
5 #charset koi8-r;
6
7 #access_log logs/host.access.log main;
8
9 location / { #控制網站訪問路徑
10 root /usr/share/nginx/html; #存放網站的路徑
11 index index.html index.htm; #默認訪問的首頁
12 }
13 #error_page 404 /404.html; #錯誤頁面
14
15 # redirect server error pages to the static page /50x.html
16 #
17 error_page 500 502 503 504 /50x.html; #定義請求錯誤,指定錯誤代碼
18 location = /50x.html { #錯誤代碼重定向到新的location
19 root html;
20 }
21 # another virtual host using mix of IP-, name-, and port-based configuration
22 #
23 #server { #server段配置
24 # listen 8000;
25 # listen somename:8080;
26 # server_name somename alias another.alias;
27
28 # location / {
29 # root html;
30 # index index.html index.htm;
31 # }
32 #}
33
34
35 # HTTPS server
36 #
37 #server { #server段配置
38 # listen 443 ssl;
39 # server_name localhost;
40
41 # ssl_certificate cert.pem;
42 # ssl_certificate_key cert.key; #SSL證書配置
43
44 # ssl_session_cache shared:SSL:1m;
45 # ssl_session_timeout 5m;
46
47 # ssl_ciphers HIGH:!aNULL:!MD5;
48 # ssl_prefer_server_ciphers on;
49
50 # location / {
51 # root html;
52 # index index.html index.htm;
53 # }
54 #}
55 }
提示:index指令中列出多個文件名,NGINX按指定的順序搜索文件並返回它找到的第一個文件。
Nginx更多配置釋義可參考:https://blog.csdn.net/tsummerb/article/details/79248015。
二 Nginx網站配置
2.1 Nginx配置網站
1 [root@nginx ~]# vi /etc/nginx/conf.d/base.conf
2 server {
3 server_name base.linuxds.com;
4 location / {
5 root /usr/share/nginx/base;
6 index index.html;
7 }
8 }
9
10 server {
11 server_name blog.linuxds.com;
12 location / {
13 root /usr/share/nginx/blog;
14 index index.html;
15 }
16 location /ok {
17 alias /usr/share/nginx/yes;
18 index index.html;
19 }
20 }
21 [root@nginx01 ~]# mkdir -p /usr/share/nginx/{base,blog,yes}
22 [root@nginx01 ~]# echo '<h1>www</h1>' > /usr/share/nginx/base/index.html
23 [root@nginx01 ~]# echo '<h1>blog</h1>' > /usr/share/nginx/blog/index.html
24 [root@nginx01 ~]# echo '<h1>love</h1>' > /usr/share/nginx/blog/love.html
25 [root@nginx01 ~]# echo '<h1>yes</h1>' > /usr/share/nginx/yes/index.html
26 [root@nginx01 ~]# nginx -t -c /etc/nginx/nginx.conf #檢查配置文件
27 [root@nginx01 ~]# nginx -s reload #重載配置文件
2.2 測試訪問
瀏覽器訪問:base.linuxds.com
瀏覽器訪問:blog.linuxds.com
瀏覽器訪問:blog.linuxds.com/ok
瀏覽器訪問:blog.linuxds.com/love.html
注:請添加對應的域名解析,添加方式取決於不一樣的IP及網絡環境,具體操做略。
2.3 Nginx配置錯誤頁面
1 [root@nginx01 ~]# vi /etc/nginx/conf.d/base.conf
2 server {
3 server_name base.linuxds.com;
4 location / {
5 root /usr/share/nginx/base;
6 index index.html;
7 }
8 }
9
10 server {
11 server_name blog.linuxds.com;
12
13 error_page 404 403 500 502 503 504 /baseerror.html; #配置錯誤頁
14 location /baseerror.html {
15 root /usr/share/nginx/html;
16 }
17
18 location / {
19 root /usr/share/nginx/blog;
20 index index.html;
21 }
22 location /ok {
23 alias /usr/share/nginx/yes;
24 index index.html;
25 }
26 }
27 [root@nginx01 ~]# echo '<h1>Error</h1>' > /usr/share/nginx/html/baseerror.html
28 [root@nginx01 ~]# nginx -t -c /etc/nginx/nginx.conf #檢查配置文件
29 [root@nginx01 ~]# nginx -s reload #重載配置文件
2.4 測試Error
瀏覽器訪問任何一個不存在的頁面,如:http://blog.linuxds.com/hhhh
三 Nginx相關安全策略
3.1 禁止htaccess
1 location ~/\.ht {
2 deny all;
3 }
3.2 禁止多個目錄
1 location ~ ^/(picture|move)/ {
2 deny all;
3 break;
4 }
3.3 禁止/data開頭的文件
1 location ~ ^/data {
2 deny all;
3 }
3.4 禁止單個目錄
1 location /imxhy/images/ {
2 deny all;
3 }
3.5 特定容許訪問
1 root /usr/share/nginx/rewrite/;
2 allow 208.97.167.194;
3 allow 222.33.1.2;
4 allow 231.152.49.4;
5 deny all;
6 auth_basic "xhy";
7 auth_basic_user_file htpasswd;