阿里云centos7.9安装nginx

340 阅读4分钟

安装nginx

lsb_release -a 查看系统版本

image.png 1. Nginx是一个高性能的HTTP和反向代理服务,许多的大型网站都会采用Nginx来进行HTTP服务器托管,当然我们这里也要采用Nginx,在安装Nginx之前,需要安装一些前置模块 安装编译环境gcc g++: 进入到root目录:

cd /root/
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel

image.png

2.安装PCRE: PCRE功能是让nginx有rewrite功能,下载PCRE:

wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz

image.png 3.解压

tar zxvf pcre-8.35.tar.gz

4.进入安装包目录:

cd pcre-8.35

编译:

./configure

安装:

make && make install
  1. 安装Nignx: 回到root目录:
cd /root/
wget http://nginx.org/download/nginx-1.16.0.tar.gz

image.png

解压nginx安装包

tar zxvf nginx-1.16.0.tar.gz

注意,这里要选好当前解压地址,解压完成就是Nginx所在的目录,这里我们在root根目录下解压。 进入安装目录:

cd nginx-1.16.0

编译(加上--with-http_ssl_module模块,为后续添加ssl做准备):

./configure --with-http_ssl_module 

安装:

make && make install

默认情况下,nginx会安装到/usr/local/nginx下面,你可以指定到安装到/root目录下

//编译:
./configure --prefix=/root/nginx --with-http_ssl_module
//安装:
make && make install

启动和停止Nginx

进入Nginx安装目录:

cd root/nginx/sbin/

启动Nginx:

./nginx

重新加载配置文件

./nginx -s reload

停止Nginx:

./nginx -s stop

nginx配置文件地址:

vi root/nginx/conf/nginx.conf

服务器上利用systemctl启停nginx服务

打开/创建nginx.service脚本

vim /usr/lib/systemd/system/nginx.service

脚本内容(注意:我的nginx重装后是装在/usr/local/nginx目录下了,如果你是装在了其他目录下,那么下面脚本中的文件地址也需要做对应的更改)

[Unit]
Description=web nginx service 
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true

[Install]
WantedBy=multi-user.target

然后刷新配置文件

systemctl daemon-reload

启动停止nginx等对应命令

//.service部分可以省略 eg:systemctl start nginx也是可以生效的
systemctl start nginx.service          // 启动nginx服务
systemctl stop nginx.service           // 停止服务
systemctl restart nginx.service        // 重新启动服务
systemctl reload nginx.service        // 重新加载配置文件
systemctl list-units --type=service     // 查看所有已启动的服务
systemctl status nginx.service          // 查看服务当前状态
systemctl enable nginx.service          // 设置开机自启动
systemctl disable nginx.service         //停止开机自启动

修改阿里云安全组入方向策略

注意,在开启nginx的http服务后,需要在阿里云的云服务器实例安全组策略中添加80端口

找到实例中的安全组配置:

image.png

image.png 整到这里,我就信誓旦旦的用nginx启动了一个服务,然后用公网ip访问后报了403,卧槽,这是什么情况 然后经过我不懈努力的百度,我们需要在nginx配置文件里加上两个配置

image.png 这样就可以访问成功了 其他详细的配置解释可以参考

image.png

ps命令查看nginx进程

ps -ef | grep nginx

image.png

nginx添加https

一、申请ssl免费证书 1.打开数字证书管理服务传送门 image.png 2.点击创建证书 image.png 3.点击证书申请 image.png 4.等待数分钟后会自动审核通过

二、下载ssl证书到本地 image.png

三、将下载下来的ssl证书的zip包上传至服务器

1.可以使用控制台中的文件上传(注意超过32k就无法上传了) image.png

image.png 2.通过scp命令上传,具体可以参考我的另一篇文章文件上传

四、将上传后的文件解压并放到nginx的conf/cert目录下 image.png

五、修改nginx.conf文件

#user  nobody;
worker_processes  1;

error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  www.coderlwh.top;
        rewrite ^(.*)$ https://$host$1;
        location / {
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
    # HTTPS server
    server {
        listen       443 ssl;
        #服务的域名要添加ssl证书申请时候的域名
        server_name  www.coderlwh.top;
        #nginx.conf里面的根目录是以/usr/localnginx/conf开始解析的,所以路径我们直接从cert开始就可以了,当然也可以写你自己配置的绝对路径
        ssl_certificate      cert/coderlwh.top.pem;
        ssl_certificate_key  cert/coderlwh.top.key;

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

        location / {
            root   html/coderlwh;
            index  index.html index.htm;
        }
    }
}
    

然后重启nginx服务

systemctl restart nginx.service

如果我们的安全组和和防火墙都设置好了就可以访问了 image.png 如果访问不了请继续以下配置:

六、添加安全组入方向允许443端口可被外网访问 image.png

七、检查防火墙

查看防火墙状态
systemctl status firewalld.service

我的防火墙是关掉的,所以是dead image.png 我们可以启动防火墙做个实验

//启动防火墙
systemctl start firewalld.service
//防火墙随系统开启启动
systemctl enable firewalld.service

设置完成之后我们可以重启下防火墙 image.png

firewall-cmd --reload

然后查询已经开放的端口

firewall-cmd --list-port

image.png

image.png 可以看到没有开放的端口,那么我们需要添加一下80和443端口

firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --reload //设置完端口后重启防火墙

image.png

image.png 可以看到80和443端口都添加上了,我们再次刷新浏览器页面,就可以正常访问https了 image.png