前言:
目前你们对“nginx查看端口”都比较注意,咱们都想要剖析一些“nginx查看端口”的相关内容。那么小编同时在网摘上收集了一些对于“nginx查看端口””的相关文章,希望大家能喜欢,同学们快快来学习一下吧!前言
经过前面的文章,你已经成功将本地的文章推送到远程服务器上面了,恭喜你!
接下来,这篇文章会以CentOS系统为例,帮助你安装Nginx,配置端口转发和SSL密钥加密,实现域名加密访问。
时隔四年,重启Hexo历险计划!
Hexo历险记之十Nginx端口转发
至于域名的备案和解析的部分就不整理了,因为阿里云官网上面的指导贴比绝大部分经验贴还要好很多,所以我就不献丑了。
查看状态
查看Nginx的状态,确定当前机器上面是否有Nginx服务。
systemctl status nginx.service服务正常
查看服务的状态为活跃正常,一般是不需要重新卸载安装的,直接去下面,看配置Nginx就可以了。
image-20220729151038757
查看nginx现在管理的端口
查看nginx master的主进程号
ps aux | grep nginx
image-20210530192407261
这一次主进程号为8806,故而:
netstat -anp | grep 8806
image-20210530192441369
查看 nginx目录
查看 nginx 安装目录
ps -ef | grep nginx服务异常
查看服务的状态为死亡异常,可以杀死Nginx服务后再重启,一般就会恢复正常。
image-20210530202733234
: 强制杀死服务pkill -9 nginx: 重启服务systemctl start nginx服务异常且无法恢复
除非是排查无果的情况下,被迫重装Nginx,我才会建议你去安装,因为重装并不能一股脑解决所有问题,还是有可能会卡在原来的老Bug上面。博主甚至被迫重置系统后重新安装才绕过了坑,所以如果原先有可用的Nginx服务,不要轻易卸载重装。
再有,即使你决定要卸载旧的服务,那么有两个地方你也需要备份,一个是原本的编译参数,另一个是原来的配置文件。
: 属性configure arguments后的信息就是编译参数 nginx -V
nginx
: 查看配置文件所在nginx -t
而且注意,配置文件不是只有结果命令中的这一个,还有其他的文件,你必须打开这个文件后查看里面是否有include字符。等你找到了所有的配置文件,且完成了备份之后,你就可以去卸载了Nginx服务了。
cd /usr/localmkdir nginx-back#在当前文件夹建立nginx-back文件夹cp -rf nginx/* nginx-back/#复制nginx文件夹下所有文件到nginx-back文件夹下卸载Nginx
第一步,停止Nginx服务。
systemctl disable nginx.service
第二步,删除Nginx的开机启动。
chkconfig nginx off
第三步,从文件上删除Nginx。
rm -rf /usr/sbin/nginxrm -rf /etc/nginxrm -rf /etc/init.d/nginx
最后一步,使用yum清理索引及其他内容。
yum remove nginx安装Nginx
总共有两种方式来安装Nginx,一种是用包管理器,方便快捷;一种使用离线安装包,步骤繁琐,但好处是可以离线安装,在没有包管理器的情况下也可以安装,而且可以自定义更为美化的索引目录界面。
注意:在安装之前,强烈建议你先运行一遍卸载命令,防止残留的旧服务配置覆盖了新安装的服务配置!
安装-使用包管理器
以CentOS系统为例,使用yum安装Nginx。
: 添加源sudo rpm -Uvh ;使用yum安装nginxyum install -y nginx: 运行nginxsystemctl start nginx.service
注意:对应的配置文件路径即是/etc/nginx/nginx.conf,日志文件路径为/var/log/nginx。
可以使用命令设置开机自启。
systemctl enable nginx.service
这种方式会会自动创建nginx.service文件,所以比源码安装的方式容易一些。
此时用浏览器直接访问IP应该是会出现欢迎界面。
image-20210530203003391
安装-使用源码
下面以2019-08-14更新的1.17.3版本为例,向大家演示如何用源码安装。
下载和解压
从官网上下载下来源码,解压到同名文件夹里面。此时就可以删除下载的安装包或者是留作备份。
: 下载源码wget ;解压到同名文件夹tar xzf nginx-1.17.3.tar.gz编译并安装
进入解压好的文件夹,设置编译路径,我是建议编译路径选择长一些的包括SSL协议,除非设置编译路径后无法安装,你再重新设置为不包括SSL的。
: 进入解压的文件夹cd nginx-1.17.3: 设置编译路径,无SSL 协议: ./configure --prefix=/usr/local/nginx : 设置编译路径,包括SSL 协议./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-file-aio --with-http_realip_module: 编译并安装make && make install添加到环境变量
如果认为没有必要,可以在每次调用前给他取一个别名。
: 可以为nginx取别名,类似添加环境变量alias nginx='/usr/local/nginx/sbin/nginx'
注意:修改/etc/profile配置文件前一定要备份!
修改/etc/profile配置文件,添加PATH内容,保存后一定要重新加载配置文件。
vim /etc/profile
添加内容如下,保存后退出。
export PATH=/usr/local/nginx/sbin:$PATH
重新加载配置文件,加载后如果没有报错就是成功了;如果有错就重新加载备份的配置文件,然后重新修改。
source etc/profile开机自启
由于这次是用源码编译安装的,需要手动创建/lib/systemd/system/nginx.service服务文件。
vim /lib/systemd/system/nginx.service
内容如下,保存后退出。
注意:[Service]的启动、重启、停止命令全部要求使用绝对路径
[Unit] Description=nginx After=network.target [Service] Type=forking ExecStart=/usr/local/nginx/sbin/nginx ExecReload=/usr/local/nginx/sbin/nginx -s reload ExecStop=/usr/local/nginx/sbin/nginx -s quitPrivateTmp=true [Install] WantedBy=multi-user.targetUnit:服务的说明Description:描述服务After:描述服务类别Service:服务运行参数的设置Type=forking:是后台运行的形式ExecStart:为服务的具体运行命令ExecReload:为重启命令ExecStop:为停止命令PrivateTmp=True:表示给服务分配独立的临时空间Install:运行级别下服务安装的相关设置WantedBy:设置为多用户,即系统运行级别为3
使用命令运行该服务文件。
systemctl start nginx.service配置Nginx
接下来,你可以根据自己的情况选择配置加密的Https连接或者是不加密的Http连接。然后就算是出师了,该学会的事情已经都告诉你了,直接访问域名就可以达到这样的效果。
image-20220729172129782
检查配置文件
: 查看nginx版本nginx -v: 查看配置文件nginx -t: 启动nginx
默认/etc/nginx/nginx.conf内容如下。
user nginx;worker_processes auto;error_log /var/log/nginx/error.log notice;pid /var/run/nginx.pid;events { worker_connections 1024;}http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; keepalive_timeout 65; include /etc/nginx/conf.d/*.conf;}
注意:一定要在第一行修改使用者为博客目录的拥有者,上一篇新建的用户是keen,所以这里也要改成一样的。
user keen;
注意:在最后一行标注了会引用/etc/nginx/conf.d目录下所有的conf配置文件,所以接下来向大家展示如何配置Http和Https时,所有的配置文件都是在这个文件夹内的。
配置Http
在/etc/nginx/conf.d/建立一个端口文档80.conf,内容如下:
server { listen 80;#监听80端口 server_name ;#域名为这个 location / { root /home/git/projects/blog;#指向的根目录 index index.html index.htm;#指向的目录中的文件 } location /about/ { root /home/git/projects/blog/about/;#指向的根目录 index index.html index.htm;#指向的目录中的文件 } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; }}listen:监听的端口,默认是监听80端口。server_name:一般是域名,也可以写为本地localhostlocation:表示匹配的路径root:表示当匹配这个请求的路径时,将会在机器的路径中寻找相应的HTML文件,这对加载静态文件很有用。index:当没有指定主页时,默认会选择这个指定的文件,它可以有多个,并按顺序来加载,如果第一个不存在,则找第二个,依此类推。配置了/表示访问所有请求都被匹配到这里配置了/about/表示访问所有请求都被匹配到这里配置/50x.html标识访问所有请求都匹配到这里error_page:是错误页面,暂时不管它。
修改配置文件后不会立刻生效,需要运行下面的命令重新加载配置才行。
nginx -s reload
此时你直接访问域名护着IP就可以看到博客了。
配置Https
上文配置了一个简单的http服务,但是他毕竟是不安全的,明文传输信息很容易被劫持和篡改的。而且重要的是浏览器总会提示该网页不安全,被某同学嬉笑着说建了一个小黄网不安全,我就留心要改变他。
Https比Http多的那一个字母s其实就是加密的意思,而现在比较成熟的加密方法就要用到证书了。生成一个自签名 SSL 证书,是继续下去的基础。
生成SSL-阿里云
由于我的域名是在阿里云注册的,所以SSL也是在阿里云生成的。
控制台搜索关键字ssl
image-20201028141221855
点击购买证书,如图选择免费的加密域名。
image-20201028141356961
支付0元后,回到原先的页面选择证书申请。
image-20201028141458168
填写想要设置的二级域名后,点击下一步,等到他签发成功之后下载即可。
image-20201028141839433
下载的压缩包里就有SSL文件,分别是pem和key文件。
生成SSL-使用freessl
也可以通过freessl,使用的TrustAsia TLS RSA CA颁发给我的证书,中间需要在本地安装一个叫做keymanager的应用。
在阿里云的服务器控制台,上传我的pem和key。
image-20200811150204936
上传成功之后,将证书导出,可以看到两个分别以key和crt为后缀的文件。
新建服务器路径/usr/local/nginx/conf/cert/,并将两个复制到其中。
image-20200811150431736
配置SSL端口转发
当你需要80端口使用加密链接的时候,你可以:
## 参考conf/nginx.conf文件,修改如下内容(此处只是关键需要修改的部分)http { server { # HTTP 和 HTTPS 都使用,如果不使用HTTP则注释掉80端口即可 listen 80; listen 443 ssl; ssl_certificate cert/; ssl_certificate_key cert/; server_name ; }}ssl_certificate:用指明crt文件所在路径ssl_certificate_key:用指明key文件所在路径
此时就可以正常使用链接来访问我的博客首页了。
配置Http强制跳转Https
使用语句,那么即使访问不安全的Http也会自动变到安全的Https的链接里去
rewrite ^(.*)$ {server_name}$1 permanent;配置目录索引
可以通过新建配置文件/etc/nginx/conf.d/files.conf,实现页面访问服务器上的文件。
如果是个人使用,建议加上同名的MD5校验值,来让访问的人确定他下载到的文件和你发布的文件是一致的,中间没有被骇客篡改过。
location / { root /home/keen/outfile; autoindex on; autoindex_exact_size off; autoindex_localtime on; index index.html; }
image-20210602201248277
端口绑定失败
如果提示端口绑定失败,那么你可以选择强行关闭Nginx后,重启服务。
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)nginx: [emerg] still could not bind()
运行如下命令。
: 强制杀死服务pkill -9 nginx: 重新指定配置文件nginx -c /etc/nginx/nginx.conf: 重启服务systemctl start nginx个人使用配置留档
将我现在使用的几个配置公开留档,方便大家作为参考和借鉴。
server1内容如下。
server { listen 80 default_server; listen [::]:80 default_server; server_name clzly.xyz; rewrite ^(.*)$ ;permanent;}
server2内容如下。
server { listen 443 ssl; server_name clzly.xyz ; ssl_certificate /etc/nginx/conf.d/cert3/clzly.xyz.pem; ssl_certificate_key /etc/nginx/conf.d/cert3/clzly.xyz.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; location /about/ { add_header 'Access-Control-Allow-Origin' $http_origin; add_header 'Access-Control-Allow-Credentials' 'true'; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; add_header 'Access-Control-Allow-Headers' 'DNT,Authorization,Accept,Origin,Keep-Alive,User-Agent,X-Mx-ReqToken,X-Data-Type,X-Auth-Token,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range'; proxy_pass ; } location / { root /home/keen/projects/blog; index index.html; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { }}
server3内容如下。
server { listen 443 ssl; server_name images.clzly.xyz ; ssl_certificate /etc/nginx/conf.d/cert3/; ssl_certificate_key /etc/nginx/conf.d/cert3/; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; client_max_body_size 20M; location / { proxy_pass ; # 转发规则 } location ~ .* { proxy_pass ; # 转发规则 proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { }
server4内容如下。
server { listen 9001; server_name clzly.xyz ; location / { root /home/keen/withyanda; index index.html; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { }}感激
感谢现在的好奇,为了能成为更好的自己。
Windows下Nginx+Tomcat整合的安装与配置
Nginx配置文件nginx.conf详解
nginx版本升级
Linux-Nginx平滑升级
Linux中nginx基本操作命令
NGINX配置使用HTTPS
如何查看Nginx监听的端口
标签: #nginx查看端口