nginx 安装与部署
nginx的部署与安装
对于nginx是用得多,了解得少。只知道可以用来做负载,服务分发
1、nginx 的安装
1、安装编译工具及库文件
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
2、安装PCRE
(1)安装路径:/user/local/src/
如果可以访问外网的话:
wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
不能访问外网,可以先下载,然后上传到服务器上,
(2)解压
tar -zxvf pcre-8.45.tar.gz
(3)编译安装
cd pcre-8.45
./configure
make && make install
(4)安装完成,检测一下
pcre-config --version
3、开始安装Nginx
去nginx 官网下载nginx安装包 nginx-1.20.2.tar.gz ,然后放到 /usr/local/src
cd /usr/local/src
解压
tar -zxvf nginx-1.20.2.tar.gz
cd nginx-1.20.2
编译安装:
./configure --prefix=/opt/server01/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.45
make && make install
安装完成:
查看一下nginx版本:
cd /opt/server01/nginx
cd sbin
./nginx -v
至此,安装完成。
4、nginx 配置
默认使用的配置是 nginx/conf/nginx.conf , 做个备份,然后按需求修改这个配置文件
5、nginx 启停相关指令
启动:./nginx
停止:./nginx -s stop
重载配置文件 ./nginx -s reload
重启:./nginx -s reopen
验证配置文件
/usr/local/nginx/sbin/nginx -tc /usr/local/nginx/conf/nginx.conf
或
/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
指定配置文件启动
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
nginx 重启
/usr/local/nginx/sbin/nginx -s reload
指定配置文件重启
/usr/local/nginx/sbin/nginx -s reload -c /usr/local/nginx/conf/nginx.conf
nginx 配置支持 ipv6
ipv6 入口访问平台
1、检查ipv6模块安装情况
先用./nginx -V 查看已安装的模块,如果有--with-ipv6,则表示已安装此模块,否则需要重新编译安装
2、nginx配置增加ipv6监听
修改 nginx.conf 文件
server {
listen 8080;
listen [::]:8080;
root /data/nginx/html/;
index index.html index.htm;
location / {
proxy_pass http://127.0.0.1:18080;
}
location /downloads/ {
alias /data/downloads/;
}
}
更好的步骤,请参考:
nginx安装及其配置详细教程 (引用更好的博文)
这个文档写得更详情。
一些备忘
情况1:
按文档执行完之后,启动nginx,发现总会报一个错
“nginx: [emerg] bind() to 0.0.0.0:80 failed (13: Permission denied)”
总报一个权限问题,一开始,还以为是因为用了root启动,或部分文档用了root,于是改了文件的归属,发现还是不行。
再看到,有博文提到,在 conf/ngin.conf 下的 user root; 这个配置项,改为与登录用户一致即可,发现还是不行。
再看到,有博文提:默认情况下Linux的1024以下端口是只有root用户才有权限占用
呃,好吧,确实,其实这个报错,已经很明确提到,是使用了80端口,绑定失败。
换了一个端口,确实就可以了。
也是一次在实践中才get到的知识。
备忘之。
访问主页403
嗯,一开始是以为文件访问路径的问题(一开始确实有问题),但改完之后,发现效果并不太好
emm, 会是什么原因呢。。。
过程就省略吧,这个问题是突然想到的,没有排错过程,soo,
直接说原因:我访问的端口,被配置了ssl , 也指定了固定的ip才能访问,但因为这个配置文件是从另外一个服务器上copy过来的。ip 自然是对不上,于是就报443了。
server {
listen 18080;
# listen 0.0.0.0:8443 ssl; -- 一开始也是写了这个 ssl, 不太确定,一并注释掉
# ssl_certificate cert/server.crt;
# ssl_certificate_key cert/server.key;
if ( $http_Host !~* ^10.12.100.106.* ) -- 这个 ip 需要与本机的ip一致。
{
return 403;
}
./nginx -v 和 ./nginx -V 是不同的!
./nginx -v 只能看到一些版本信息
./nginx -V 可以看到部署的模块信息