一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

云服務器|WEB服務器|FTP服務器|郵件服務器|虛擬主機|服務器安全|DNS服務器|服務器知識|Nginx|IIS|Tomcat|

服務器之家 - 服務器技術 - Nginx - Nginx服務器初期基本配置指南

Nginx服務器初期基本配置指南

2019-11-06 11:59Snowolf Nginx

這篇文章主要介紹了Nginx服務器初期基本配置指南,包括重定向以及基本的負載均衡配置等,需要的朋友可以參考下

一、準備
pcre,有關正則表達式匹配;zlib,用于壓縮。這些就不細說了,如果要安裝最簡版的nginx,記得準備好這兩樣東西就好了。
用root賬戶啟動服務是比較危險的!  前段時間,測試服務器被黑掉了,終歸到底是通過一個root啟動的服務上傳了木馬,最后連ssh都屏蔽了,活生生成為一臺肉雞。。。
所以,慘痛的經驗告訴我,一定要為服務建立對應的組和用戶,限制訪問權限,降低風險! 
這里為nginx建立一個www組,并建立一個不登錄的賬戶nginx:

?
1
2
3
4
#追加一個www組
groupadd -f www
#追加一個nginx用戶
useradd -s /sbin/nologin -g www nginx


建立一個目錄用于存放nginx日志文件,并賦予相應權限:

?
1
2
3
4
#建立nginx日志目錄
mkdir /var/log/nginx
#賦予訪問權限
chown nginx.www /var/log/nginx


二、編譯安裝
我把pcre、zlib、nginx的壓縮包都放在了/opt/software路徑下,服務要裝在/opt/servers路徑下。
先對pcre、zlib、nginx解壓,然后編譯安裝:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
./configure --prefix=/opt/servers/nginx \
--user=nginx \
--group=www \
--pid-path=/var/run/nginx.pid \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-pcre=/opt/software/pcre-8.10 \
--with-zlib=/opt/software/zlib-1.2.5 \
--with-http_stub_status_module \
--with-http_realip_module \
--with-http_gzip_static_module \
--without-http_fastcgi_module \
--without-http_memcached_module \
--without-http_map_module \
--without-http_geo_module \
--without-http_autoindex_module \
--with-poll_module
&& make && make install


三、系統配置
我希望nginx可以作為一個服務,通過service命令啟動或停止。
這樣做的好處是,不論我用什么用戶調用這個service命令,都不會因為使用錯誤的賬戶帶來安全問題。
建立一個系統文件:

?
1
vim /etc/init.d/nginx


前人栽樹,后人乘涼。已經有老鳥做好了啟動配置文件:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#!/bin/bash
# v.0.0.1
# create by jackbillow at 2007.10.15
# nginx - This shell script takes care of starting and stopping nginx.
#
# chkconfig: - 60 50
# description: nginx [engine x] is light http web/proxy server
# that answers incoming ftp service requests.
# processname: nginx
# config: /etc/nginx.conf
nginx_path="/opt/servers/nginx"
nginx_pid="/var/run/nginx.pid"
 
# Source function library.
. /etc/rc.d/init.d/functions
 
# Source networking configuration.
. /etc/sysconfig/network
 
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
[ -x $nginx_path/sbin/nginx ] || exit 0
RETVAL=0
prog="nginx"
start() {
# Start daemons.
if [ -e $nginx_pid -a ! -z $nginx_pid ];then
  echo "nginx already running...."
  exit 1
fi
if [ -e $nginx_path/conf/nginx.conf ];then
  echo -n $"Starting $prog: "
  $nginx_path/sbin/nginx -c $nginx_path/conf/nginx.conf &
  RETVAL=$?
  [ $RETVAL -eq 0 ] && {
    touch /var/lock/subsys/$prog
    success $"$prog"
  }
  echo
else
  RETVAL=1
fi
  return $RETVAL
}
# Stop daemons.
stop() {
  echo -n $"Stopping $prog: "
  killproc -d 10 $nigx_path/sbin/nginx
  RETVAL=$?
  echo
  [ $RETVAL = 0 ] && rm -f $nginx_pid /var/lock/subsys/$prog
}
# See how we were called.
case "$1" in
start)
  start
  ;;
stop)
  stop
  ;;
restart)
  stop
  start
  ;;
status)
  status $prog
  RETVAL=$?
  ;;
*)
  echo $"Usage: $0 {start|stop|restart|status}"
  exit 1
esac
exit $RETVAL


注意,這里的路徑:
引用

?
1
2
nginx_path="/opt/servers/nginx"
nginx_pid="/var/run/nginx.pid"


如果你的nginx安裝路徑在其它位置,請對應修改!
然后賦予這個文件執行權限:

?
1
chmod +x /etc/init.d/nginx


追加為系統服務:

?
1
2
chkconfig --add nginx
chkconfig nginx on


現在就可以使用,如下命令控制nginx服務了!
引用

?
1
2
3
4
5
6
7
8
#啟動nginx
service nginx start
#停止nginx
service nginx stop
#重啟nginx
service nginx restart
#查看nginx狀態
service nginx status


四、基本配置
完成上述工作后,nginx還不能急于投入使用,需要做一些基本配置與優化工作。
修改nginx配置文件:

?
1
vim /opt/servers/nginx/conf/nginx.conf

微調
引用

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#使用的用戶和組,這里我們為nginx服務新建了nginx賬戶和www工作組
user nginx www;
#制定的工作衍生進程數(2倍于CPU內核數)
worker_processes 4;
#錯誤日志存放路徑,日志級別由低到高[debug | info | notice | warn | error | crit]
error_log /var/log/nginx/error.log crit;
#指定文件描述符數量 與ulimit -n數值保持一致
work_rlimit_nofile 65535;
events {
#使用的網絡I/O模型,Linux用epoll模型,Unix用kqueue模型
use epoll;
#允許的連接數
worker_connections 51200;
}
http{
 include  mime.types;
 default_type application/octet-stream;
 #追加 '"$sent_http_cache_control" "$sent_http_pl" "$request_time"'獲取請求細節信息
 log_format main '$remote_addr - $remote_user [$time_local] "$request" '
      '$status $body_bytes_sent "$http_referer" '
      '"$http_user_agent" "$http_x_forwarded_for"'
      '"$sent_http_cache_control""$sent_http_pl" "$request_time"';
 access_log   /var/log/nginx/access.log main;
 ...
 server{
  ...
  location / {
   root html;
   index index.html index.htm index.jsp index.do;
   #在header中傳遞請求放host、ip等信息
   proxy_set_header Host $host;
   proxy_set_header X-Real-IP $remote_addr;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   proxy_pass_header Content-Type;
   proxy_pass_header Content-Disposition;
   proxy_pass_header Content-Length;
   ...
  }
 }
}


五、虛擬目錄
nginx配置虛擬目錄很簡單,主要是運用root、alias兩個指令。
以訪問圖片服務為例:
root,用于相對路徑
引用

?
1
2
3
location /image/ {
  root /data;
}

當我們訪問“/image/”路徑時,實際上訪問的是“/data/image/”,注意“/data”后面不要有“/”
alias,用于絕對路徑
引用

?
1
2
3
location /image/ {
  alias /data/img/;
}

當我們訪問“/image/”路徑時,實際上訪問的是“/data/img/”,注意“/data/img/”以“/”結尾。

六、重定向
有時候鏈接不加考慮就放出去了,突然哪天需要調整,又不能及時撤回已放出的鏈接地址。只好自己修改nginx配置。
譬如,放出去的鏈接:/activity.do?m=v 想讓它指到/路徑上:
引用

?
1
rewrite ^/activity(.*)$ / last;


想要把請求來的參數也帶上:
引用

?
1
rewrite ^/activity(.*)$ /$1 last;


$1指得是第一個參數,以此類推。


六、監控
引用

?
1
2
3
4
5
6
7
8
9
location /status {
 stub_status on;
 access_log off;
 allow 10.10.0.0/16;
 allow 10.1.0.0/16;
 allow 10.11.0.0/16;
 
 deny all;
}


引用

?
1
2
3
4
Active connections: 14
server accepts handled requests
62 62 302
Reading: 0 Writing: 3 Waiting: 11


七、日志分割

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/bin/bash
# THis script run at 00:00
# author dongliang at 2012-09-07
# Nginx Log Path
logs_path="/var/log/nginx/"
# Nginx PID Path
nginx_pid="/var/run/nginx.pid"
 
mkdir -p ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/
 
mv ${logs_path}access.log ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/access_$(date -d "yesterday" +"%Y%m%
d").log
 
mv ${logs_path}error.log ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/error_$(date -d "yesterday" +"%Y%m%d"
).log
 
kill -USR1 `cat $nginx_pid`


賦予執行權限

?
1
chmod +x nginx_log.sh

凌晨執行

?
1
2
crontab -e
0 0 * * * /opt/script/nginx_log.sh

八、Nginx負載均衡
在http{...}中配置一個upstream{...},參考如下:
引用

?
1
2
3
4
upstream tomcat {
 server 10.11.155.26:8080;
 server 10.11.155.41:8080;
}

接著修改location節點,配置代理:
引用

?
1
2
3
4
5
6
location / {
  ...
   proxy_pass http://tomcat;
 
  ...
}

當訪問根路徑時,會輪播路由到兩臺服務器上,至于后端服務器是tomcat還是jetty之類的,都無所謂,照葫蘆畫瓢就是了。
當然,有的機器性能好,或者負載低,可以承擔高負荷訪問量,可以通過權重(weight),提升訪問頻率。數值越高,被分配到的請求數越多。
server指令參數如下:
weight——權重,數值越大,分得的請求數就越多,默認值為1。
max_fails——對訪問失敗的后端服務器嘗試訪問的次數。默認值為1,當設置為0時將關閉檢查。
fail_timeout——失效超時時間,當多次訪問失敗后,對該節點暫停訪問。
down——標記服務器為永久離線狀態,用于ip_hash指令。
backup——僅當非backup服務器全部宕機或繁忙時啟用。

例如,可以這樣配置:
引用

?
1
2
3
4
upstream tomcat {
 server 10.11.155.26:8080 weight=5;
 server 10.11.155.41:8080 weight=10;
}

后者分得的請求數就會較高。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日韩精品一区二区三区中文字幕 | 国自产在线精品免费 | 天堂成人在线视频 | 日本免费高清在线观看播放 | 日韩欧美一区二区三区中文精品 | 成人免费视频大全 | 美女福利视频网站 | 国产日韩欧美不卡www | 久久这里只有精品视频e | 日韩亚洲人成网站在线播放 | 亚洲免费在线看 | 九九精品国产亚洲A片无码 九九99热久久999精品 | 亚洲精品乱码久久久久久蜜桃图片 | 草莓香蕉绿巨人丝瓜榴莲18 | 干b视频在线观看 | 经典三级四虎在线观看 | 日本高清中文字幕一区二区三区 | 双性肉文高h | 欧美日韩精彩视频 | 扒开黑女人p大荫蒂老女人 扒开大腿狠狠挺进视频 | 出a级黑粗大硬长爽猛视频 吃胸膜奶视频456 | 亚洲第一二三四区 | 四虎库 | 呜呜别塞了啊抽插 | 午夜秀场在线观看 | 91热这里只有精品 | 91精品国产综合久 | 母爱成瘾在线观看 | 国产成人亚洲精品一区二区在线看 | 日韩欧美国产综合精品 | 精品一久久香蕉国产二月 | 精品一区二区高清在线观看 | 2022av小四郎的最新地址 | 色哟哟哟在线精品观看视频 | 黄a一级 | gogort人体的最新网站 | 蜜桃成熟3在线观看 | 日韩精品亚洲一级在线观看 | 成人在线免费观看 | 日本中文字幕一区二区高清在线 | tkvk视频 |