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;
        }
    }
相关推荐
紫荆鱼1 小时前
设计模式-命令模式(Command)
c++·后端·设计模式·命令模式
编码追梦人2 小时前
深耕 Rust:核心技术解析、生态实践与高性能开发指南
开发语言·后端·rust
朝新_2 小时前
【SpringBoot】详解Maven的操作与配置
java·spring boot·笔记·后端·spring·maven·javaee
绝无仅有2 小时前
某教育大厂面试题解析:MySQL索引、Redis缓存、Dubbo负载均衡等
vue.js·后端·面试
sean3 小时前
开发一个自己的 claude code
前端·后端·ai编程
追逐时光者3 小时前
C#/.NET/.NET Core技术前沿周刊 | 第 59 期(2025年10.20-10.26)
后端·.net
..Move...4 小时前
Docker应用部署tomcat和nginx
nginx·docker·tomcat
盖世英雄酱581364 小时前
java深度调试【第三章内存分析和堆内存设置】
java·后端
007php0075 小时前
京东面试题解析:同步方法、线程池、Spring、Dubbo、消息队列、Redis等
开发语言·后端·百度·面试·职场和发展·架构·1024程序员节
程序定小飞5 小时前
基于springboot的电影评论网站系统设计与实现
java·spring boot·后端