NGINX

发布于:2025-06-13 ⋅ 阅读:(18) ⋅ 点赞:(0)

nginx的安装
建议使用源码包安装
■源码包安装步骤:解包;配置;编译;安装
■前提:提前安装源码包安装所依赖的内容(gcc,make,openssl-devel,pcre-devel)
●解包:建议解包之前查看一下压缩包的内容,是否为完整的目录,如果不是目录,直接解压缩,压缩包内容会充斥目录的各个角落
●配置:./configure --prefix=安装路径 --user=nginx --group=nginx --with-http_ssl_module 指定安装路径,指定用户,组,开启ssl加密功能,此项配置完毕后会出现makefile文件;如果没有定义安装位置则默认安装在/usr/local/nginx下
●编译:make(如果没有安装此软件包需提前安装)
●安装:make install
nginx启动
○未配置systemctl启动方式
■启动:/usr/local/nginx/sbin/nginx
■更新配置:/usr/local/nginx/sbin/nginx -s reload
■关闭:/usr/local/nginx/sbin/nginx -s stop
■查看nginx软件信息:/usr/local/nginx/sbin/nginx -V(v是大写的)
○配置systemctl启动方式

   [root@proxy nginx]#cd	/usr/lib/systemd/system
   [root@proxy nginx]#cp	httpd.service		nginx.service
[root@proxy nginx]#vim		nginx.service
   [Unit]
Description=The Nginx HTTP Server       #描述信息
After=network.target remote-fs.target nss-lookup.target     #在网络程序,网络文件系统,域名解析等服务启动之后,再启动nginx   
[Service]
Type=forking     #forking多进程类型服务
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MAINPID        #kill给程序发送QUIT退出信号,关闭nginx
[Install]
   WantedBy=multi-user.target
   按照以上内容配置,配置完毕后即可使用systemctl控制nginx的启动,停止及加载配置
[root@proxy nginx]#systemctl start nginx    #可以控制nginx开启了,这里如果无效可以尝试重启服务器

nginx服务默认通过80端口监听客户端请求
○使用ss -antlp命令查看系统中启动的端口信息
■-a显示所有端口的信息
■-n以数字格式显示端口号
■-t显示TCP连接的端口
■-u显示UDP连接的端口
■-l显示服务正在监听的端口信息,如httpd启动后,会一直监听80端口
■-p显示监听端口的服务名称是什么(也就是程序名称)
●nginx服务默认首页文档存储目录为/usr/local/nginx/html/,此目录下默认有一个index.html文件(默认读取)
虚拟主机
基于域名的虚拟主机(端口相同,域名不同,location内根目录不同)
○修改nginx配置文件,添加相关虚拟主机配置,配置文件如下

[root@proxy nginx]#vim	/usr/local/nginx/conf/nginx.conf
http {
.. ..
    server {
        listen       80;                           #端口
        server_name  www.panda.com;                    #定义虚拟主机域名
        location / {
            root   html_b;                         #指定网站根路径
            index  index.html index.htm;           #默认页面
        }
}
    server {
    listen  80;                                 #端口
    server_name  www.panda1.com;                     #定义虚拟主机域名
...    
    location / { 
        root   html;                            #指定网站根路径
        index  index.html index.htm;
    }
}
...
[root@proxy nginx]#/usr/local/nginx/sbin/nginx  -s  reload   #重新加载配置文件
如果需要测试的话,可以操作以下步骤
[root@proxy nginx]#curl	www.panda.com
[root@proxy nginx]#curl	www.panda1.com
[root@proxy nginx]#echo		IP地址	 www.panda.com www.panda1.com  >>	/etc/hosts  #可以通过修改host文件测试通信(linux环境)
windows环境配置hosts文件
C:\Windows\System32\drivers\etc\hosts
然后用文本打开hosts,在最后添加
192.168.88.5 www.a.com www.b.com
如果hosts文件是只读,可以
右击hosts文件---属性---安全---编辑---users---完全控制打钩

基于端口的虚拟主机(端口相同,域名不同,location内根目录不同)
○修改nginx配置文件,添加相关虚拟主机配置,配置文件如下

[root@proxy nginx]#vim	/usr/local/nginx/conf/nginx.conf
...
    server {
        listen       8080;               #端口
        server_name  www.panda.com;          #域名
        ......
}
    server {
        listen       8000;                #端口
        server_name  www.panda.com;           #域名
      .......

[root@proxy nginx]# systemctl	reload	nginx  #重新加载配置文件

基于IP的虚拟主机
○修改nginx配置文件,添加相关虚拟主机配置,配置文件如下

[root@proxy nginx]#vim	/usr/local/nginx/conf/nginx.conf
...
   server {
        listen       192.168.88.5:80;    #IP地址与端口
        server_name  www.a.com;          #域名
  ... ...
}
    server {
        listen       192.168.99.5:80;     #IP地址与端口
        server_name  www.a.com;
... ...
}
...
[root@proxy nginx]# systemctl	reload	nginx  #重新加载配置文件

配置SSL虚拟主机
加密算法说明
●源码安装Nginx时必须使用–with-http_ssl_module参数,启用加密模块,对于需要进行SSL加密处理的站点添加ssl相关指令(设置网站需要的私钥和证书)
●加密算法一般分为对称算法、非对称算法、信息摘要
○对称算法有:AES、DES,主要应用在单机数据加密
○非对称算法有:RSA、DSA,主要应用在网络数据加密
○信息摘要:MD5、sha256,主要应用在数据完整性校验

[root@proxy nginx]# echo 123 > /root/test
[root@proxy nginx]# md5sum/sha256sum/sha512sum  /root/test	#查看加密后的内容,如果文件改动加密内容会发生变化,再次修改为原来的内容则不变

生成公私钥(公钥加密,私钥解密)

[root@proxy nginx]# openssl genrsa > conf/cert.key            #生成私钥,放到cert.key文件
[root@proxy nginx]# openssl req -x509 -key conf/cert.key > conf/cert.pem    #-x509格式,生成证书,生成过程会询问诸如你在哪个国家之类的问题
Country Name (2 letter code) [XX]:        #国家名
State or Province Name (full name) []:    #省份
Locality Name (eg, city) [Default City]:  #城市
Organization Name (eg, company) [Default Company Ltd]:		#公司
Organizational Unit Name (eg, section) []:               #部门
Common Name (eg, your name or your server's hostname) []:dc #服务器名称
Email Address []:          #电子邮件,符合邮件格式
[root@proxy nginx]# systemctl  reload 	nginx  #重新加载配置文件
[root@proxy nginx]# mkdir https    #创建安全网站的目录
[root@proxy nginx]# echo "nginx-https~"  > https/index.html     #创建安全网站的页面
root@client ~]# curl  -k  https://192.168.88.5     #检验,-k是忽略安全风险
nginx-https~      #看到这个内容就说明成功