如何在服务器上配置Nginx以通过域名访问 PmHub?
🚀 如何把PmHub项目“吃透”?
嗨嗨嗨,如果你正在为项目经历发愁,简历上只能写一些烂大街的项目,甚至连写什么都不知道,投出去的简历石沉大海,面试机会寥寥无几,那么请毫不犹豫地加入来个 offer 编程星球。我们将为你解决燃眉之急:
1、付费文档:微服务实战项目PmHub、前后端分离项目技术派等高质量项目的付费文档,超 60 万字,注意是一次付费享受永久查看权限哦😯。
2、面试指南:我们还编撰了超 50 万字的Java面试指南,包含面试准备篇、求职名单篇、面经分享篇、职场修炼篇、技术提升篇、场景设计题篇等,帮你打通求职的任督二脉,真正地吊打“面试官”。
3、专属问答:向二哥和苍何发起 1v1 提问,内容不限于 offer 选择、学习路线制定、职业规划、技术疑难杂症解决等。
4、简历修改:提供精心的简历修改服务(已修改超 3000 份),附赠星球 500 份优质简历模板,为你打造一份投了就有笔试或者面试的高分简历。
5、学习环境:打造一个沉浸式的学习环境,营造一种高考冲刺、大学考研的氛围,对秋招、春招、社招的同学格外有用!
Nginx是什么
Nginx是一款高性能、轻量级的Web服务器软件,同时也可以作为反向代理服务器、负载均衡器和HTTP缓存器。它由俄罗斯程序员 Igor Sysoev 开发,最初是为了满足 Rambler.ru 站点的需求而设计的,后流行应用于反向代理和负债均衡以及解决跨域问题。
为什么Nginx这么强?
Nginx是一个 轻量级/高性能的反向代理Web服务器,它是由C语言写的,所以速度非常快、性能非常优秀。它的主要功能就是反向代理、负载均衡、配置SSL证书、防盗链、解决跨域问题、缓存、限流、动静资源分离等等。
为什么要用Nginx
Nginx 是一款高性能的 Web 服务器,它具有以下优点:
- 轻量级:Nginx 只占用很低的内存和 CPU 资源,性能非常优秀。
- 支持热部署:Nginx 支持热部署,可以不停止服务就更新配置文件,或者重新加载配置文件。
- 支持高并发:Nginx 支持高并发,能够处理数以万计的并发请求。
- 支持负载均衡:Nginx 支持负载均衡,可以将请求分发到多个服务器上,提高系统的处理能力。
- 支持反向代理:Nginx 支持反向代理,可以作为代理服务器使用,将请求转发到后端的服务器上,从而实现负载均衡和缓存功能。
- 支持缓存:Nginx 支持缓存,可以将静态文件缓存起来,提高网站的访问速度。
- 支持安全防护:Nginx 支持安全防护,可以防止一些常见的攻击,如 SQL 注入、跨站脚本攻击等。
- 支持模块化设计:Nginx 采用模块化设计,可以根据需要选择不同的模块,从而实现不同的功能。
- 支持多种语言:Nginx 支持多种语言,如 PHP、Python、Java 等,可以方便地集成各种编程语言。
- 支持多种操作系统:Nginx 支持多种操作系统,如 Linux、Windows、MacOS 等,可以方便地部署到不同的操作系统上。
PmHub 的服务端口需要做反向代理,以及需要处理跨域问题,而且需要进行域名解析映射,因此需要使用 Nginx 来进行配置。就比如访问我们的体验地址:https://pmhub.laigeoffer.cn,这里我们就是通过 Nginx 来进行配置的。
下载Nginx
提示
进入下载地址:http://nginx.org/en/download.html
注意
查看所有历史版本,地址: http://nginx.org/download/
云服务器安装Nginx
yum install -y nginx
# yum install nginx
# 如果使用yum install xxxx,会找到安装包之后,询问你Is this OK[y/d/N],需要你手动进行选择。但是如果加上参数-y,就会自动选择y,不需要你再手动选择!
# 查看Nginx版本号
nginx -v
# 查看安装的所有 Nginx 包
yum list | grep nginx
# 查看 Nginx 安装相关的文件位置信息
whereis nginx
Nginx 目录结构
Nginx 配置
进入默认安装路径:
cd /etc/nginx/
ls
找到 nginx.conf
修改成如下配置,注意先备份一下原先的文件,防止错误操作。
cp nginx.conf nginx.conf.bak
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
worker_connections 768;
# multi_accept on;
}
http {
##
# Basic Settings
##
sendfile on;
tcp_nopush on;
types_hash_max_size 2048;
# server_tokens off;
# server_names_hash_bucket_size 64;
# server_name_in_redirect off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
##
# SSL Settings
##
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
##
# Logging Settings
##
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
##
# Gzip Settings
##
gzip on;
# gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
##
# Virtual Host Configs
##
# 添加自定义配置文件,用于配置我们自己的域名(导入的自定义配置文件是有先后顺序的)
include /etc/nginx/vhosts/*.conf;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
这里的关键是开启 SSL,以及引入外部配置文件。因为实际项目中,会有很多的系统,每一个系统的配置文件,我们都可以单独抽离出来,放在单独的文件夹下。
这里我建了一个 vhosts 文件夹,用于存放我们所有的自定义配置文件。
mkdir /etc/nginx/vhosts
然后,我们新建一个配置文件,比如:
vim /etc/nginx/vhosts/example.com.conf
server {
listen 80;
listen [::]:80;
server_name example.com;
location / {
}
这里我们直接贴出 PmHub 的 Nginx 配置。
提示
因为我绑定了域名并开启了 SSL,所以这里需要配置一下 SSL 证书。如果你没有域名也可以不配置。
# 以下属性中,以ssl开头的属性表示与证书配置有关。
server {
# 配置HTTPS的默认访问端口为443。
# 如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。
# 如果您使用Nginx 1.15.0及以上版本,请使用listen 443 ssl代替listen 443和ssl on。
listen 443 ssl;
# 填写绑定证书的域名
server_name pmhub.laigeoffer.cn;
# 证书文件名称
ssl_certificate 这里是存放证书文件的位置;
# 私钥文件名称
ssl_certificate_key 这里是存放证书文件的位置;
# 指定客户端可以重用会话参数的时间(超时之后不可使用)
ssl_session_timeout 5m;
# 表示使用的加密套件的类型
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
# 表示使用的TLS协议的类型,您需要自行评估是否配置TLSv1.1协议。
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
# 设置协商加密算法时,优先使用我们服务端的加密套件,而不是客户端浏览器的加密套件。
ssl_prefer_server_ciphers on;
location / {
# Web网站程序存放目录
root 你的项目下载位置/pmhub/docker/nginx/html/dist;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
# 配置反向代理
location /prod-api/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:6880/;
}
}
具体流程图如下:
检查配置是否正确
# 1、检查配置是否正确
nginx -t
# 2、使配置生效
nginx -s reload
启动Nginx
# 启动
systemctl start nginx
# 查看Nginx状态
systemctl status nginx
# 查询Nginx进程:
ps -ef | grep nginx
查看进程id
ps -C nginx -o pid
这样就配置启动完成了,也是部署中最为核心的一个环节,如果有问题,可以在知识星球发个帖子或者向我发起提问,掌握了上线部署流程,是很有帮助的,现在面试没上线的项目,面试官基本不看了。