安装nginx
lsb_release -a 查看系统版本
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
2.安装PCRE: PCRE功能是让nginx有rewrite功能,下载PCRE:
wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
3.解压
tar zxvf pcre-8.35.tar.gz
4.进入安装包目录:
cd pcre-8.35
编译:
./configure
安装:
make && make install
- 安装Nignx: 回到root目录:
cd /root/
wget http://nginx.org/download/nginx-1.16.0.tar.gz
解压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端口
找到实例中的安全组配置:
整到这里,我就信誓旦旦的用nginx启动了一个服务,然后用公网ip访问后报了403,卧槽,这是什么情况
然后经过我不懈努力的百度,我们需要在nginx配置文件里加上两个配置
这样就可以访问成功了
其他详细的配置解释可以参考
ps命令查看nginx进程
ps -ef | grep nginx
nginx添加https
一、申请ssl免费证书
1.打开数字证书管理服务传送门
2.点击创建证书
3.点击证书申请
4.等待数分钟后会自动审核通过
二、下载ssl证书到本地
三、将下载下来的ssl证书的zip包上传至服务器
1.可以使用控制台中的文件上传(注意超过32k就无法上传了)
2.通过scp命令上传,具体可以参考我的另一篇文章文件上传
四、将上传后的文件解压并放到nginx的conf/cert目录下
五、修改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
如果我们的安全组和和防火墙都设置好了就可以访问了
如果访问不了请继续以下配置:
六、添加安全组入方向允许443端口可被外网访问
七、检查防火墙
查看防火墙状态
systemctl status firewalld.service
我的防火墙是关掉的,所以是dead
我们可以启动防火墙做个实验
//启动防火墙
systemctl start firewalld.service
//防火墙随系统开启启动
systemctl enable firewalld.service
设置完成之后我们可以重启下防火墙
firewall-cmd --reload
然后查询已经开放的端口
firewall-cmd --list-port
可以看到没有开放的端口,那么我们需要添加一下80和443端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --reload //设置完端口后重启防火墙
可以看到80和443端口都添加上了,我们再次刷新浏览器页面,就可以正常访问https了