下载Nginx

打开官方下载网站 选择稳定版下载

image-20200529222051763

然后上传到linux服务器

安装

安装nginx之前需要先安装相关依赖,执行

1
$ yum -y install gcc pcre-devel zlib-devel openssl openssl-devel	#安装相关依赖

安装完成之后进入到下载后存放的nginx文件夹 执行

1
2
3
4
5
6
7
8
9
10
11
$ tar -xvf nginx-1.18.0.tar.gz			#解压下载的nginx压缩包到当前文件
$ cd nginx-1.18.0/ #进入到解压后的文件夹
$ ./configure --prefix=/usr/local/nginx #执行nginx配置,并指定Nginx安装目录
# ps: 如果网站是https的,请使用下面这种配置
$ ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
$ make #编译程序
$ make install #安装程序

$ cd /usr/local/nginx #安装完成后进入到刚刚配置的安装路径
$ sudo chmod -R a+rw /usr/local/nginx #给所有用户赋权限
$ ./sbin/nginx #启动nginx

打开浏览器,访问服务器地址,出现以下页面,说明成功

image-20200531124504131

可能用到的命令

1
2
$ ./sbin/nginx -s stop		#停止nginx
$ ./sbin/nginx -s reload #重启

可能遇到的问题

启动后浏览器访问,出现无法访问此网站拒绝了我们的连接请求,可能是防火墙是开启状态,需要防火墙添加80端口出入规则

1
2
3
4
$ systemctl status firewalld    #查看防火墙是否是开启状态(如果状态显示的是active(running)则是开启状态;failed则是关闭状态 )
$ firewall-cmd --list-ports #查看服务器当前的开启的端口
$ firewall-cmd --zone=public --add-port=80/tcp --permanent #添加服务器 nginx服务的80端口访问
$ firewall-cmd --reload #重启防火墙 然后浏览器访问

nginx配置

使用vim 修改nginx.conf配置文件,修改完成后保存退出,重启nginx服务即可

1
$ vim /usr/local/nginx/conf/nginx.conf

开机自启

首先配置下nginx.pid

1
2
3
$ vim /usr/local/nginx/conf/nginx.conf

pid logs/nginx.pid;

image-20210408124901911

在/etc/init.d下创建文件nginx

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
#! /bin/bash
# chkconfig: - 85 15
# description: Nginx is a World Wide Web server.
# processname: nginx
PATH=/usr/local/nginx
DESC="nginx daemon"
NAME=nginx
DAEMON=$PATH/sbin/$NAME
CONFIGFILE=$PATH/conf/$NAME.conf
PIDFILE=$PATH/logs/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
set -e
[ -x "$DAEMON" ] || exit 0
do_start() {
$DAEMON -c $CONFIGFILE || echo -n "nginx already running"
}
do_stop() {
$DAEMON -s stop || echo -n "nginx not running"
}
do_reload() {
$DAEMON -s reload || echo -n "nginx can't reload"
}
case "$1" in
start)
echo -n "Starting $DESC: $NAME"
do_start
echo "."
;;
stop)
echo -n "Stopping $DESC: $NAME"
do_stop
echo "."
;;
reload|graceful)
echo -n "Reloading $DESC configuration..."
do_reload
echo "."
;;
restart)
echo -n "Restarting $DESC: $NAME"
do_stop
do_start
echo "."
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|reload|restart}" >&2
exit 3
;;
esac
exit 0

然后设置文件的执行权限

1
$ chmod a+x /etc/init.d/nginx	#给所有用户添加可执行权限

验证下

1
2
3
$ #验证脚本
$ /etc/init.d/nginx start
$ /etc/init.d/nginx stop

如果执行启动命令报错:
Warning: nginx.service changed on disk. Run ‘systemctl daemon-reload’ to reload units.

解决方案:

1
$ systemctl daemon-reload

重启服务器即可:

1
$ systemctl start nginx.service 

验证脚本通过后,将刚刚创建的脚本添加到系统服务里

1
2
3
4
$ chkconfig --add /etc/init.d/nginx		#添加chkconfig
$ service nginx start #启动
$ service nginx stop #停止
$ service nginx restart #重启

最后一步设置服务自动重启

1
2
3
4
$ chkconfig --add nginx
$ chkconfig nginx on
$ chkconfig --list nginx #检查下
nginx 0:off 1:off 2:on 3:on 4:on 5:on 6:off

重启下系统验证下

https证书配置

1
2
$ cd /usr/local/nginx/conf  #进入Nginx默认安装目录。此处为Nginx默认安装目录,请您根据实际配置情况操作。
$ mkdir cert #创建cert证书目录。

将两个ssl证书文件放到此目录

  • 证书文件:文件类型为PEM。
  • 密钥文件:文件类型为KEY。

然后修改nginx配置文件

1
$ vim /usr/local/nginx/conf/nginx.conf #打开配置文件。此处为Nginx默认配置文件目录,请您根据实际配置情况操作。

修改server配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
server {
listen 443 ssl; #配置HTTPS的默认访问端口号为443。此处如果未配置HTTPS的默认访问端口,可能会造成Nginx无法启动。Nginx 1.15.0以上版本请使用listen 443 ssl代替listen 443和ssl on。
server_name www.certificatestests.com; #将www.certificatestests.com修改为您证书绑定的域名,例如:www.example.com。如果您购买的是通配符域名证书,要修改为通配符域名,例如:*.aliyun.com。
root html;
index index.html index.htm;
ssl_certificate cert/domain name.pem; #将domain name.pem替换成您证书的文件名称。
ssl_certificate_key cert/domain name.key; #将domain name.key替换成您证书的密钥文件名称。
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #使用此加密套件。
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #使用该协议进行配置。
ssl_prefer_server_ciphers on;
location / {
root html; #站点目录。
index index.html index.htm;
}
}

http重定向https配置

设置HTTP请求自动跳转HTTPS

1
2
3
4
5
6
7
8
9
server {
listen 80;
server_name yourdomain.com; #需要将yourdomain.com替换成证书绑定的域名。
rewrite ^(.*)$ https://$host$1; #将所有HTTP请求通过rewrite指令重定向到HTTPS。
location / {
index index.html index.htm;
}
}