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;
        }
    }
相关推荐
NiNg_1_2342 小时前
SpringBoot整合SpringSecurity实现密码加密解密、登录认证退出功能
java·spring boot·后端
Chrikk3 小时前
Go-性能调优实战案例
开发语言·后端·golang
幼儿园老大*3 小时前
Go的环境搭建以及GoLand安装教程
开发语言·经验分享·后端·golang·go
canyuemanyue3 小时前
go语言连续监控事件并回调处理
开发语言·后端·golang
杜杜的man3 小时前
【go从零单排】go语言中的指针
开发语言·后端·golang
苹果醋35 小时前
Java8->Java19的初步探索
java·运维·spring boot·mysql·nginx
customer085 小时前
【开源免费】基于SpringBoot+Vue.JS周边产品销售网站(JAVA毕业设计)
java·vue.js·spring boot·后端·spring cloud·java-ee·开源
雨雪飘零6 小时前
Windows系统使用OpenSSL生成自签名证书
nginx·证书·openssl