CentOS7 nginx的安装和配置以及填坑

发布 : 2017-08-26 分类 : Linux 维护 浏览 :

  Nginx是一个WEB 服务器,也可以用作反向代理,负载均衡器和 HTTP缓存。该软件由 Igor Sysoev 创建,并于2004年首次公开发布。同名公司成立于2011年,以提供支持。   Nginx 是免费的开源软件,根据类似 BSD许可证的条款发布。大部分 Web服务器通常使用 NGINX 作为负载均衡器。1

安装

  在CentOS7中安装 直接使用 yum 安装 nginx是无法安装的,应为 yum 没有 nginx的源,所以需要添加Nginx的源。

添加 Nginx 源

rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

查看 Nginx 安装包信息

yum info nginx

安装 Nginx

yum install nginx
按照上面步骤操作,提示成功后。Nginx 会被安装到 /usr/local/nginx 中。执行脚本在该目录的 conf/ 目录中,配置文件在 sbin/ 中。

启动 Nginx

手动启动

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
这里建议使用绝对路径启动,这样当一段时间后你还能找到 nginx 的相关路径。

脚本启动

这里为了方便管理,我写了一个管理脚本。实现了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
74
75
76
77
#!/bin/bash
### BEGIN INIT INFO
#
# Provides: location_server
# Required-Start: $local_fs $remote_fs
# Required-Stop: $local_fs $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: initscript
# Description: This file should be used to construct scripts to be placed in /etc/init.d.
#
### END INIT INFO

## Fill in name of program here.
PROG="nginx" #程序名词
PROG_PATH="/usr/local/nginx/sbin/"#程序路径
PROG_ARGS="-c /usr/local/nginx/conf/nginx.conf" #参数
PID_PATH="/home/user/pid/" #pid存放路径

start() {
if [ -e "$PID_PATH/$PROG.pid" ]; then
## Program is running, exit with error.
echo "Error! $PROG is currently running!"
exit 1
else
## Change from /dev/null to something like /var/log/$PROG if you want to save output.
cd $PROG_PATH
$PROG_PATH/$PROG $PROG_ARGS &
pid=`ps -ef | grep $PROG | grep -v grep | awk '{print $2}'`

echo "$PROG started"
echo $pid > "$PID_PATH/$PROG.pid"
cd - > /dev/null
fi
}

stop() {
echo "begin stop"
if [ -e "$PID_PATH/$PROG.pid" ]; then
## Program is running, so stop it
pid=`ps -ef | grep $PROG | grep -v grep | awk '{print $2}'`
kill $pid

rm -f "$PID_PATH/$PROG.pid"
echo "$PROG stopped"
else
## Program is not running, exit with error.
echo "$PROG not started!"
fi
}

## Check to see if we are running as root first.
## Found at http://www.cyberciti.biz/tips/shell-root-user-check-script.html
if [ "$(id -u)" != "0" ]; then
echo "This script must be run as root"
exit 1
fi

case "$1" in
start)
start
exit 0
;;
stop)
stop
exit 0
;;
reload|restart|force-reload)
stop
start
exit 0
;;
**)
echo "Usage: $0 {start|stop|reload}" 1>&2
exit 1
;;
esac

验证安装

安装并启动成功之后,在你的路由器输入,你服务器 IP。如果显示下面的节目即表示 Nginx 安装成功。
359161-20160118150017513-1715983539

Nginx配置

基本配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
user www; #这里是启动nginx 的用户,这个用户必须真实存在。
worker_processes 1; #启动的nginx线程数量,建议和你的内核数量相同。

error_log /usr/local/nginx/logs/error.log info;#错误日志存储路径和文件名
pid /usr/local/nginx/logs/nginx.pid; #pid存储路径


events {
worker_connections 1024;
}


http {
include mime.types;
default_type application/octet-stream;
sendfile on;

keepalive_timeout 65;

server {
#这里每个网址具体的配置,下面会做详细介绍。
}
}

由于我属于拿来主义,所以好的术语并不专业,还望多多见谅。

MediaWiki 伪静态配置

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
 server
{
listen 80;#监听端口
server_name wiki.flowlore.com;#域名
index index.html index.htm index.php;
root /var/html;
location ~ .*\.(php|php5)?$
{
root /var/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /$document_root$fastcgi_script_name;
include fastcgi.conf;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|ico)$
{
expires 30d;
# access_log off;
}
location ~ .*\.(js|css)?$
{
expires 15d;
# access_log off;
}
access_log off;

#MediaWiki shortcut rule
location ~ ^\/.+$ {
if ($request_uri ~ ^/images) { break; }
if ($request_uri ~ ^/resources) { break; }
if ($request_uri ~ ^/index\.php) { break; }
if ($request_uri ~ ^/index\.php) { break; }
rewrite ^/(.+)$ /index.php?title=$1 last;
}
}

HTTPS 配置

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
server
{
#监听端口
listen 80;
#ssl参数
listen 443 ssl;
server_name flowlore.com www.flowlore.com;
#证书文件
ssl_certificate /var/www.flowlore.com.crt;
#私钥文件
ssl_certificate_key /var/www.flowlore.com_key.txt;
#优先采取服务器算法
ssl_prefer_server_ciphers on;
#使用DH文件
ssl_dhparam /etc/ssl/certs/dhparam.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
#定义算法
ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4";
#HSTS策略
#add_header Strict-Transport-Security "max-age=31536000; includeSubDomains;preload" always;
#减少点击劫持
add_header X-Frame-Options DENY;
#禁止服务器自动解析资源类型
add_header X-Content-Type-Options nosniff;
#防XSS攻击
add_header X-Xss-Protection 1;
root /home/www/blog;
index index.html index.htm index.php;

location /
{
try_files $uri $uri/ /index.php?q=$uri&$args;
}

location ~ .*\.(php|php5)?$
{
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /$document_root$fastcgi_script_name;
include fastcgi.conf;
}
}

Fcgi 接口配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

server {
listen 2080;
server_name www.flowlore.com;
#access_log logs/host.access.log main;
error_page 500 502 503 504 /50x.html;
root /var/files;
location = /50x.html {
root html;
}
#ip limit

location ~ ^/cgi-bin/cgi_name.fcgi
{
root cgi-bin;
fastcgi_pass 127.0.0.1:8011;
include fastcgi.conf;
}

  1. 该介绍摘自 维基百科
本文作者 : Lojze
原文链接 : http://blog.flowlore.com/passages/centos7-nginx-de-an-zhuang-he-pei-zhi-yi-ji-tian-k/
版权声明 : 版权声明: 本博客所有文章除特别声明外, 均采用 CC BY-NC-SA 4.0 许可协议. 转载请注明出自《舍予书》
留下足迹