Linux 安装Nginx

介绍

Nginx是俄罗斯人编写的十分轻量级的HTTP服务器。Nginx它的发音为"engine X",是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP代理服务器。目前有很多国内网站采用Nginx作为Web服务器,如国内知名的新浪、网易、腾讯、字节跳动、豆瓣等。据netcraft统计,2023年web服务器市场份额Nginx排名第一,相类似的产品还有Apache和lighttpd以及微软的IIS。

Nginx具有很高的稳定性。其它HTTP服务器,当遇到访问的峰值,或者有人恶意发起慢速连接时,也很可能会导致服务器物理内存耗尽频繁交换,失去响应,只能重启服务器。例如当前apache一旦上到200个以上进程,web响应速度就明显非常缓慢了。而Nginx采取了分阶段资源分配技术,使得它的CPU与内存占用率非常低。nginx官方表示保持10,000个没有活动的连接,它只占2.5M内存,所以类似DOS这样的攻击对nginx来说基本上是毫无用处的,就稳定性而言,nginx比lighthttpd更胜一筹。

安装

编译安装

ruby 复制代码
# 先安装依赖软件
[thinktik@thinkdev:envs]$ dnf install pcre pcre-devel zlib zlib-devel openssl openssl-devel
# 解压
[thinktik@thinkdev:envs]$ tar -zxvf nginx-1.24.0.tar.gz
# 建立安装目录
[thinktik@thinkdev:envs]$ mkdir nginx
# 进入文件夹
[thinktik@thinkdev:envs]$ ls
 nginx  nginx-1.24.0  nginx-1.24.0.tar.gz
[thinktik@thinkdev:envs]$ cd nginx-1.24.0
# 设置安装文件路径为/home/thinktik/envs/nginx并指定安装SSL模块
[thinktik@thinkdev:nginx-1.24.0]$ ./configure --prefix=/home/thinktik/envs/nginx --with-http_ssl_module
# 编译
[thinktik@thinkdev:nginx-1.24.0]$ make
# 安装
[thinktik@thinkdev:nginx-1.24.0]$ make install

启动并验证

我们进入安装目录/home/thinktik/install/nginx看到nginx已经有了安装后的文件

ruby 复制代码
[thinktik@thinkdev:envs]$ cd nginx
[thinktik@thinkdev:nginx]$ ls
conf  html  logs  sbin
[thinktik@thinkcent nginx]$ cd sbin/
[thinktik@thinkdev:sbin]$ ls
nginx
[thinktik@thinkdev:sbin]$ su
Password: 
[root@thinkdev sbin]# ./nginx
# 验证nginx运行状态以及监听端口
[root@thinkdev sbin]# netstat -lnt |grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN     
[root@thinkdev sbin]# ps -ef |grep nginx
root       10339       1  0 20:23 ?        00:00:00 nginx: master process ./nginx
nobody     10340   10339  0 20:23 ?        00:00:00 nginx: worker process
root       10348   10322  0 20:24 pts/0    00:00:00 grep --color=auto nginx
# 防火墙放行80/443端口运行外部主机访问
[root@thinkdev sbin]# firewall-cmd --zone=public --add-port=80/tcp --permanent
success
[root@thinkdev sbin]# firewall-cmd --zone=public --add-port=443/tcp --permanent
success
[root@thinkdev sbin]# firewall-cmd --reload
success

这时我们在浏览器上输入我们主机的ip地址就可以验证了,不多讲。

设置开机自启动

编辑文件/usr/lib/systemd/system/nginx.service,填入下面的内容:

ini 复制代码
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target

[Service]
Type=forking
# 指定自己编译的nginx的可执行路径
ExecStartPre=/home/thinktik/envs/nginx/sbin/nginx -t
ExecStart=/home/thinktik/envs/nginx/sbin/nginx
ExecReload=/home/thinktik/envs/nginx/sbin/nginx -s reload
ExecStop=/home/thinktik/envs/nginx/sbin[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target

更新systemd并启动服务,如果遇到Failed at step EXEC spawning... Permission denied,很可能是SELinux处于安全原因阻止了服务的正常运行,这时关闭SElinux或者设置SElinux放行nginx服务再启动服务!

csharp 复制代码
# 更新systemd
[root@thinkdev ~]# systemctl daemon-reload
# 启动nginx服务
[root@thinkdev ~]# systemctl start nginx.service
# 关闭nginx服务
[root@thinkdev ~]# systemctl stop nginx.service
[root@thinkdev ~]# systemctl start nginx.service
# 查看nginx服务状态
[root@thinkdev ~]# systemctl status nginx.service

强制HTTPS

ini 复制代码
    server {
         listen  80;
         server_name www.xxx.cc xxx.cc;
         # 80转发到443
         return  301 https://$server_name$request_uri;
    }
     
    server {
        listen 443 ssl;
        server_name www.xxx.cc omoz.cc;
        root html;
        index index.html index.htm;
        ssl_certificate cert/cert-file-name.pem;
        ssl_certificate_key cert/cert-file-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 / {
            # 后端服务地址
            proxy_pass http://localhost:4000;
        }
    }
相关推荐
.生产的驴10 分钟前
SpringBoot 消息队列RabbitMQ 消费者确认机制 失败重试机制
java·spring boot·分布式·后端·rabbitmq·java-rabbitmq
苹果酱05671 小时前
一文读懂SpringCLoud
java·开发语言·spring boot·后端·中间件
掐指一算乀缺钱2 小时前
SpringBoot 数据库表结构文档生成
java·数据库·spring boot·后端·spring
计算机学姐4 小时前
基于python+django+vue的影视推荐系统
开发语言·vue.js·后端·python·mysql·django·intellij-idea
JustinNeil4 小时前
简化Java对象转换:高效实现大对象的Entity、VO、DTO互转与代码优化
后端
青灯文案14 小时前
SpringBoot 项目统一 API 响应结果封装示例
java·spring boot·后端
微尘85 小时前
C语言存储类型 auto,register,static,extern
服务器·c语言·开发语言·c++·后端
计算机学姐5 小时前
基于PHP的电脑线上销售系统
开发语言·vscode·后端·mysql·编辑器·php·phpstorm
BLEACH-heiqiyihu6 小时前
红帽9中nginx-源码编译php
运维·nginx·php
码拉松6 小时前
千万不要错过,优惠券设计与思考初探
后端·面试·架构