Centos 7 Nginx安裝、設定與系統調校

659 詞

前言

因為最近有朋友在問Nginx該怎麼設定,所以就打算來分享一下Nginx的架設方法,順便與各位分享一下我在使用上碰到的問題,所以會再加上一點系統調整的地方。

※本次用途只是簡單的做TCP LoadBalance的功能。

那就開始吧! (・ω´・ )

正題

  • 首先就是CentOS最好用的夥伴

    1
    yum install epel-release
  • 安裝Nginx

    1
    yum install nginx
  • 預設開機啟動

    1
    systemctl enable nginx
  • 啟動Nginx

    1
    systemctl start nginx
  • 設定防火牆永久允許HTTP

    1
    2
    firewall-cmd --permanent --zone=public --add-service=http;
    firewall-cmd --reload;

結束,下課

σ ゚∀ ゚) ゚∀゚)σ


設定

vim /etc/nginx/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
user  root;
worker_processes 8; # 指定Nginx可以開啟的程式數量,一般為CPU的兩倍

error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;


worker_rlimit_nofile 41000; # 此參數的作用是改變Worker Processes 能打開的最大文檔數
events {
worker_connections 20000; # 單個Processes的最大連線數
}

http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
#include /etc/nginx/conf.d/*.conf;
}

include /etc/nginx/tcp.d/*.conf;

vim /etc/nginx/tcp.d/example.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
stream {

log_format basic 'source=$remote_addr [$time_local] status=$status session_time=$session_time upstream_addr=$upstream_addr" upstream_connect_time="$upstream_connect_time"';

log_format example '$remote_addr [$time_local] '
'$protocol $status $bytes_sent $bytes_received '
'$session_time "$upstream_addr" '
'"$upstream_bytes_sent" "$upstream_bytes_received" "$upstream_connect_time"';

access_log /var/log/nginx/access.log basic;
error_log /var/log/nginx/error.log warn;

upstream game {
least_conn; # 最少連線數
server 192.168.1.1:15688 ;
server 192.168.1.2:15688 ;
server 192.168.1.3:15688 ;
server 192.168.1.4:15688 ;
}

server {
listen 12000;
proxy_pass game;
}
}
~

Upstream Balancing Algorithm 有以下四種可以選

  • (round robin): 預設值。每個server會依序接到新進來的request。
  • least_conn: 新的連線總是會被送到有最少active connections的後端。在connection至後端會持續一段時間的時候特別有用。
  • ip_hash: 這個平衡演算法依據client IP把request分到不同的server。前三個位元組被用作key去決定那個server要處理此request。結果是client傾向於被同一個server服務,可以幫助保持session一致。
  • hash: 此平衡演算主要使用memecached代理。Server依據隨機的hash key被區分。可以是文本,變數或組合。這是唯一須要使用者提供資料作為key。

說明

本次案例僅透過least_conn 來進行loadbalance的調配,所以設定上較為簡單,也沒有針對Buffer做調校,畢竟這類設定還是得依需求調整。

系統調校

vim /etc/sysctl.conf

1
2
3
4
5
6
7
8
9
10
net.ipv4.ip_forward = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30
net.netfilter.nf_conntrack_max=1966080

net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 819200
net.core.netdev_max_backlog = 819200
net.ipv4.ip_local_port_range = 1024 65535

vim /etc/security/limits.conf

1
2
3
4
5
6
7
*    soft    nofile    65000
* hard nofile 65000
* hard nofile 65535
* soft nofile unlimited
* hard nproc unlimited
* soft nproc unlimited
# End of file

設定完成記得重開機唷!!

以下是簡單的設定說明,下次再見囉。