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;
        }
    }
相关推荐
凤凰战士芭比Q7 分钟前
web中间件——Nginx
前端·nginx·中间件
Craaaayon27 分钟前
如何选择两种缓存更新策略(写缓存+异步写库;写数据库+异步更新缓存)
java·数据库·redis·后端·缓存·mybatis
唐僧洗头爱飘柔95271 小时前
【GORM(3)】Go的跨时代ORM框架!—— 数据库连接、配置参数;本文从0开始教会如何配置GORM的数据库
开发语言·数据库·后端·golang·gorm·orm框架·dsn
Jonathan Star2 小时前
在 Go 语言中,模板字符串
开发语言·后端·golang
盘古开天16662 小时前
从零开始:如何搭建你的第一个简单的Flask网站
后端·python·flask
用户21411832636022 小时前
Claude Skills 从零到一:手把手打造专属公众号文风生成器,10 分钟搞定 AI 技能定制
后端
追逐时光者3 小时前
C#/.NET/.NET Core技术前沿周刊 | 第 60 期(2025年11.1-11.9)
后端·.net
码上成长3 小时前
GraphQL:让前端自己决定要什么数据
前端·后端·graphql
weixin_537765803 小时前
【Nginx优化】性能调优与安全配置
运维·nginx·安全
码事漫谈4 小时前
C++双向链表删除操作:由浅入深完全指南
后端