IDEA
发表于|更新于|软件
|总字数:149|阅读时长:1分钟|浏览量:
教程
IDEA查看方法被调用
修改光标所在行背景颜色
断点判断条件
在断点上点右键,正常的写判断代码就行
插件
Rabinbow Brackets
作者:Zhihao Zhang
使用方法
Command
+右键,高亮选中部分
Alt
+右键,高亮选中部分,其余的代码变暗
CommitMessage
作者:郭翰林
使用方法,提交的时候,点击✈️的图标
Codeium
作者:Codeium
写代码的时候会有自动提示,按tab确定使用AI生成的代码
Key Promoter X
Translation
作者:Yii.Guxing
选中要翻译的内容,右键选择翻译
相关推荐

2022-11-19
DataGrip
查看ddl和复制为insert语句 显示设置数据库颜色 显示树状结构 显示表的commnet 显示数据库DDL最后一次更新的时间 同步/比较两个表的数据结构用command 选中 两个想要比较的表,然后在其中一个表,选择 只显示不一样的字段 显示全部字段,绿色表示不一样 也可以比较两个库,还是刚才的方法,选中两个库,再比较 相当于Navicat的这个功能 复制功能标记1,选中表,Command + c 就是复制的表名 标记2,选中库,Command + c 就是复制的库名 右边的选项,让你复制出的SQL格式是什么样的,比如复制出insert的sql,或者update的sql,或者导出xml 或者,多条记录复制出一条sql语句,简单使用可以尝试 build-in: sql inserts sql updates scripted: sql-insert-multirow Sql-insert-statements 导出的功能使用mysqldump,导出整个库 Mac电脑需要安装,mysql-client 1234brew install mysql-client# 二进制目录(需要手动复制到上图的路径):/opt/homebrew/opt/mysql-client/bin/mysqldump 导入SQL要在库名上点右键 这个功能类似于

2022-11-19
Excel
行和列隐藏或显示行和列在电子表格中隐藏或取消隐藏列,以仅显示需要查看或打印的数据 📌 不影响计算 隐藏列 选择一个或多个列,然后按 Ctrl 选择不相邻的其他列。 右键单击选定的列,然后选择隐藏。📌 两列之间的双线表示隐藏了一个列。 ✅ 参考:微软官方文档 取消隐藏列 选择隐藏列的相邻左列和相邻右列。 右键单击选定的列,然后选择“取消隐藏”。 或双击隐藏列所存在的两列之间的双线。 自定义列的格式比如这里要设置列的格式是 年月日星期几 默认的日期和时间是没有符合要求的 自定义设置 📌 这样设置之后,比如在单元格里值设置的是 2021-01-02实际上显现的会是 2021年1月2日 星期几 ✅ 参考:微软官方文档

2022-11-19
ElasticSearch
手动安装7.x手动安装单机ElasticSearch7.x123456789101112131415161718192021222324252627282930# 下载tar包,(6.6.2)wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.2.tar.gz# 解压缩之后修改配置文件vi /elasticsearch-7.10.1/config/elasticsearch.ymlnetwork.host: 0.0.0.0 #设置成外网也可以访问# 追加内容,修改系统环境该变量,修改完需要重启才能生效vi /etc/sysctl.confvm.max_map_count=262144# 加载参数anthony@base:/usr/local/elasticsearch-6.6.2$ sudo sysctl -pvm.max_map_count = 262144# 允许打开的最大文件描述,加入vim /etc/security/limits.conf* soft nofile 65536* hard nofile 65536* soft nproc 4096 或者(65536)* hard nproc 4096 或者(65536)# 修改JVM分配大小 这两个值要一致vi config/jvm.options-Xms4g-Xmx4g# 启动bin/elasticsearchbin/elasticsearch -d #后台启动 安装分词器下载解压缩的哦elasticsearch的plugin目录下IK分词器https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v6.6.2 1POST /_analyze { "analyzer": "ik_smart", "text": " 程序员 } 拼音分词器https://github.com/medcl/elasticsearch-analysis-pinyin/releases/tag/v6.6.2 12345GET /medcl/_analyze { "text": ["程序员"], "analyzer": "pinyin_analyzer" } 报错原因: 1234567891011# chown -R 用户名:用户名 目录名Exception in thread "main" java.nio.file.AccessDeniedException: /root/home/searchengine/elasticsearch-6.2.4/config/jvm.options at sun.nio.fs.UnixException.translateToIOException(UnixException.java:84) at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102) at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107) at sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:214) at java.nio.file.Files.newByteChannel(Files.java:361) at java.nio.file.Files.newByteChannel(Files.java:407) at java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:384) at java.nio.file.Files.newInputStream(Files.java:152) at org.elasticsearch.tools.launchers.JvmOptionsParser.main(JvmOptionsParser.java:58) 手动安装集群ElasticSearch7.x1.修改一台elasticsearch的elasticsearch.yml 1234567891011cluster.name: kkb-esnode.name: node0node.master: truenetwork.host: 0.0.0.0http.port: 9200transport.tcp.port: 9300discovery.zen.ping.unicast.hosts: ["127.0.0.1:9300","127.0.0.1:9301","127.0.0.1:9302"]discovery.zen.minimum_master_nodes: 2http.cors.enabled: truehttp.cors.allow-origin: "*" 2.拷贝到其他的服务器 修改上面呢的配置文件中的3个配置 123node.name: node0http.port: 9200transport.tcp.port: 9300 3.检查健康状态 1http://localhost:9200/_cat/health?v 手动单机Kibana7.x安装1234567891011# 下载解压https://artifacts.elastic.co/downloads/kibana/kibana-6.6.2-linux-x86_64.tar.gz# 修改配置文件vi kibana-6.4.2-linux-x86_64/config/kibana.ymlserver.port: 5600server.host: "0.0.0.0"elasticsearch.url: "http://localhost:9200"# 启动,后台启动./bin/kibana & 手动单机Logstash7.x安装mysql-connector-java-5.1.48.jar是放在logstash-6.6.2/logstash-core/lib/jars,这样就不需要写相对路径了 12345678910111213141516171819202122input { jdbc { jdbc_driver_library => "mysql-connector-java-5.1.48.jar" jdbc_driver_class => "com.mysql.jdbc.Driver" jdbc_connection_string => "jdbc:mysql://192.168.111.128:3306/ssm" jdbc_user => "root" jdbc_password => "123456" jdbc_paging_enabled => "true" jdbc_page_size => "2" statement => "SELECT id,'name',phone FROM phone where update_data >= :sql_last_value" tracking_column_type => "timestamp" tracking_column => "update_date" schedule => "* * * * *" }}output { elasticsearch { index => "phone" document_id=> "%{id}" hosts => ["http://192.168.111.128:9200"] }} 启动命令 1./logstash -f ../config/logstash-sample.conf 手动安装8.x 📌 8.0 已经自带了jdk 二进制包安装ES安装12345# 下载包并解压wget https://xxxx.tar# 启动./elasticsearch./bin/elasticsearch 运行结果123456789101112131415161718192021✅ Elasticsearch security features have been automatically configured!✅ Authentication is enabled and cluster connections are encrypted.ℹ️ Password for the elastic user (reset with `bin/elasticsearch-reset-password -u elastic`): Shb2+OuCKthxFTxD-*jEℹ️ HTTP CA certificate SHA-256 fingerprint: ceb6add33653a4c8f3493bddde839cdfcf1035a3a50cb01247962495f15ea40fℹ️ Configure Kibana to use this cluster:• Run Kibana and click the configuration link in the terminal when Kibana starts.• Copy the following enrollment token and paste it into Kibana in your browser (valid for the next 30 minutes): eyJ2ZXIiOiI4LjAuMCIsImFkciI6WyIxMC4wLjIuNDo5MjAwIl0sImZnciI6ImNlYjZhZGQzMzY1M2E0YzhmMzQ5M2JkZGRlODM5Y2RmY2YxMDM1YTNhNTBjYjAxMjQ3OTYyNDk1ZjE1ZWE0MGYiLCJrZXkiOiJXaEV4SDM4QlZXV242cU9KejgxNTprUVliUEY0dlJfaU56MnRFaDlRY0hnIn0=ℹ️ Configure other nodes to join this cluster:• On this node: ⁃ Create an enrollment token with `bin/elasticsearch-create-enrollment-token -s node`. ⁃ Uncomment the transport.host setting at the end of config/elasticsearch.yml. ⁃ Restart Elasticsearch.• On other nodes: ⁃ Start Elasticsearch with `bin/elasticsearch --enrollment-token <token>`, using the enrollment token that you generated. 停止服务,修改配置文件然后输入:curl 127.0.0.1:9200,返回是: 12[hy@localhost ~]$ curl 127.0.0.1:9200curl: (52) Empty reply from server 而ES那边也有响应 123# 看来这和以前的7.1.1版本不一样了[2022-02-19T05:02:02,812][WARN ][o.e.x.s.t.n.SecurityNetty4HttpServerTransport] [localhost.localdomain] received plaintext http traffic on an https channel, closing connection Netty4HttpChannel{localAddress=/127.0.0.1:9200, remoteAddress=/127.0.0.1:38518}[2022-02-19T05:02:27,144][WARN ][o.e.x.s.t.n.SecurityNetty4HttpServerTransport] [localhost.localdomain] received plaintext http traffic on an https channel, closing connection Netty4HttpChannel{localAddress=/[0:0:0:0:0:0:0:1]:9200, remoteAddress=/[0:0:0:0:0:0:0:1]:56174} 修改配置文件 123456789# 需要把security features都关闭,否则http不对外服务了# true改成falsexpack.security.http.ssl: enabled: false keystore.path: certs/http.p12# Enable encryption and mutual authentication between cluster nodesxpack.security.transport.ssl: enabled: false 测试访问12http://localhost:9200需要输入账号和密码:elastic / Shb2+OuCKthxFTxD-*jE java访问测试12345<dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-client</artifactId> <version>8.0.0</version></dependency> 1234567891011121314151617181920212223242526272829@Bean(destroyMethod = "close")public RestClient restClient() throws CertificateException, IOException, KeyStoreException, NoSuchAlgorithmException, KeyManagementException { final CredentialsProvider credentialsProvider = new BasicCredentialsProvider(); credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("elastic", "VWFjE60dbpKIjbajGJQ4")); Path caCertificatePath = Paths.get("E:\\es\\elasticsearch-8.0.0-windows-x86_64\\elasticsearch-8.0.0\\config\\certs\\http_ca.crt"); CertificateFactory factory = CertificateFactory.getInstance("X.509"); Certificate trustedCa; try (InputStream is = Files.newInputStream(caCertificatePath)) { trustedCa = factory.generateCertificate(is); } KeyStore trustStore = KeyStore.getInstance("pkcs12"); trustStore.load(null, null); trustStore.setCertificateEntry("ca", trustedCa); SSLContextBuilder sslContextBuilder = SSLContexts.custom() .loadTrustMaterial(trustStore, null); final SSLContext sslContext = sslContextBuilder.build(); RestClientBuilder builder = RestClient.builder( new HttpHost("localhost", 9200, "https")) .setHttpClientConfigCallback(httpClientBuilder -> { httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider); return httpClientBuilder.setSSLContext(sslContext); }); return builder.build();} 1234567//注入client@AutowiredRestClient restClient;Request request = new Request("GET","/ess_book/_doc/1");Response response = restClient.performRequest(request);return EntityUtils.toString(response.getEntity()); 集群安装ES全栈开发之ElasticSearch8.0分布式搜索引擎集群及其高可用测试 - 掘金 安装Kibana安装报错max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] 123456vim /etc/sysctl.confvm.max_map_count=****262144# 使生效sysctl -p**** 安装插件安装HEADHead是elasticsearch的集群管理工具,可以用于数据的浏览和查询 (1)elasticsearch-head是一款开源软件,被托管在github上面,所以如果我们要使用它,必须先安装git,通过git获取elasticsearch-head (2)运行elasticsearch-head会用到grunt,而grunt需要npm包管理器,所以nodejs是必须要安装的 (3)elasticsearch5.0之后,elasticsearch-head不做为插件放在其plugins目录下了。使用git拷贝elasticsearch-head到本地 cd /usr/local/ git clone git://github.com/mobz/elasticsearch-head.git (4)安装elasticsearch-head依赖包 [root@localhost local]# npm install -g grunt-cli [root@localhost _site]# cd /usr/local/elasticsearch-head/ [root@localhost elasticsearch-head]# cnpm install (5)修改Gruntfile.js [root@localhost _site]# cd /usr/local/elasticsearch-head/ [root@localhost elasticsearch-head]# vi Gruntfile.js 在connect–>server–>options下面添加:hostname:’*’,允许所有IP可以访问 (6)修改elasticsearch-head默认连接地址[root@localhost elasticsearch-head]# cd /usr/local/elasticsearch-head/_site/ [root@localhost _site]# vi app.js 将this.base_uri = this.config.base_uri || this.prefs.get(“app-base_uri”) || “

2022-11-19
Jenkins
Root用户权限启动Jenkins适用于Ubuntu环境下通过apt-get install -y jenkins命令在线安装的Jenkins 1.修改配置文件 123456789vim /etc/default/jenkins# 将下面两个参数修改为root# 修改前JENKINS_USER=$NAMEJENKINS_GROUP=$NAME# 修改后JENKINS_USER=rootJENKINS_GROUP=root 2.更改目录权限 不知道这步有没有起作用 12345cd /var/lib/chown -R root:root ./jenkins# 重启systemctl restart jenkins.service Jenkins使用教程配置JDKManage Jenkins –> Global Tool Configuration 自动安装 手动安装要注意,JAVA_HOME的输入框下面,不要有警告或者错误信息,否则就是路径不正确,取消勾选自动安装 配置Maven 安装Maven Integration 插件 通常自动安装maven就行了,如果手动安装,MAVEN_HOME 输入框下面,不要有警告或者错误信息,否则就是路径不正确 获取当前项目名称在脚本中输入 $JOB_NAME就能获取到了 卸载jenkins12345678910//服务sudo apt-get remove jenkins//安装包,注意这里如果不是ubuntu那就yumsudo apt-get remove --auto-remove jenkins//配置和数据sudo apt-get purge jenkinssudo apt-get purge --auto-remove jenkins 升级jenkins12# 适用于ubuntu安装的apt-get upgrade jenkins 同时构建任务的个数系统管理–>系统设置–>执行者数量 构建成功才继续发包只是个不大不小的功能,很容易忽略了,在 任务的配置–>Post Steps –> Run only if build succeeds 修改时区 WebHook使用的场景,Github Push代码之后,自动构建 第一步.jenkins的配置 第二步.Github的配置 第三步.返回jenkins设置 第四步.push代码,查看有没有正常构建 Jenkins+Docker部署Maven聚合工程安装Jenkins 1234567891011docker run \ -v /var/run/docker.sock:/var/run/docker.sock \ -v $(which docker):/usr/bin/docker \ -v /root/jenkins:/var/jenkins_home \ --name jenkins \ --user=root \ -p 8080:8080 \ -p 50000:50000 \ -d \ -u 0 \ jenkins/jenkins:jdk11 第2行是将宿主机的/var/run/docker.sock映射到容器中,这样在容器中运行的docker命令,就会在宿主机上来执行。 第3行是将宿主机的docker程序映射进容器中,这样本身没有安装docker的jenkins容器就可以执行docker命令了(事实上容器里是没有运行docker的服务的,我们只是用这个映射进容器的docker来作为客户端发送docker的指令到/var/run/docker.sock而已,而/var/run/docker.sock已经被链接到宿主机了) Dockerfile 1234FROM openjdk:8-jdk-alpineVOLUME /tmpADD admin-server-0.0.1-SNAPSHOT.jar app.jarENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] Maven的pom.xml配置 12345678910111213141516<plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>0.4.13</version> <configuration> <imageName>springboot/${project.artifactId}</imageName> <dockerDirectory>src/main/docker</dockerDirectory> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration></plugin> imageName打的镜像名称,这里的镜像名称是:springboot/admin-server dockerDirectory指定docker文件夹的位置 Job配置 • -e “SPRING_PROFILES_ACTIVE=prerelease” ,可以看成是启动jar的时候的,java -jar admin-server.jar –spring.profiles.active=prerelease ,指定运行环境 脚本检测容器的运行1234567891011121314# "=" 两边不能有空格count=`docker ps -a | grep sabong-admin-controlfront |awk '{print $1}'`if [ -n "$count" ]; then docker stop $count docker rm $count echo "停止并删除容器"fidocker run \ -itd \ -p 9011:9011 \ -e “SPRING_PROFILES_ACTIVE=prerelease” \ --name admin-server \ springboot/admin-server 推送镜像到harbor12345678910# 打标签# sabong/sabong-controller-manager:latest 已经build成功了的镜像名字# 10.0.0.7/library/sabong/sabong-controller-manager:latest 新的镜像名字docker tag sabong/sabong-controller-manager:latest 10.0.0.7/library/sabong/sabong-controller-manager:latest# 登录私有仓库docker login -u admin -p 123456 10.0.0.7# 推送镜像docker push 10.0.0.7/library/sabong/sabong-controller-manager:latest Vue打包成镜像123456789101112131415npm installnpm run build:prod# build# sabong/sabong-admin-controlfront 随便起的docker build -t sabong/sabong-admin-controlfront --no-cache . # 打标签docker tag sabong/sabong-admin-controlfront:latest 10.0.0.7/library/sabong/sabong-admin-controlfront:latest# 登录私有仓库docker login -u admin -p 123456 10.0.0.7# 推送镜像docker push 10.0.0.7/library/sabong/sabong-admin-controlfront:latest Dockerfile 123From nginxCOPY dist/ /usr/share/nginx/html/ ⛔ 这里用的是nginx容器里默认的nginx配置文件,所以这里没有使用自定义的nginx配置 SpringBoot项目脚本适用于ssh传输文件,启动脚本 1234567891011121314151617181920#!/bin/bash# 具体不知道是干啥的,加上这个,这个看情况加# BUILD_ID=DONTKILLMEAPP_NAME=xxx.jar# 杀进程pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}' ` if [ -n "${pid}" ]; then kill -9 $pidfiecho '准备启动jar包'nohup java -jar /root/$APP_NAME --spring.profiles.active=prod &sleep 3echo '启动成功' Maven多模块打包指定打包项目名 1clean package -pl 模块名 -am 配置SSH server 在系统管理–>System—>SSH Server配置 配置SSH Over FTP publish 这里Verbose output in console的作用是把远程的步骤,和远程的shell执行的结果也打印出来 这里Exec in pty 要勾选,不然项目启动完成了,也不会停止SSH链接 前端打包选择已经配置的node版本 构建环境 Build Steps 选择执行shell 12345npm installnpm run build:prodpwd# 删除上一次构建打的包,然后dist文件夹打包成dist.zip文件rm -f dist.zip && zip -r dist.zip dist 各种问题报错1.HTTP ERROR 403 No valid crumb was included in the request 解决办法:网上都是要去关闭CSRF,很明确的是我这里的全局安全配置里面根本就没有选项,我的版本是jenkins 2.293。所以百度出来的都是一堆垃圾,无奈自己解决,尝试一番之后,找到了方法,如 下图所示:还是在全局安全配置里面,勾选上这个参数即可。 2.Jenkins配置中安装插件时提示No such plugin: cloudbees-folder 1sudo systemctl start jenkins 2.Jenkins和Github personal access token 登录到您的 Jenkins 服务器。 选择“Jenkins”>“Manage Jenkins”>“Configure System”。 滚动到“GitHub”部分。 点击“Add GitHub Server”按钮。 在“API URL”字段中输入您的 Github API URL(例如 api.github.com)。 在“Credentials”字段中选择“Add”。 选择“Kind”为“Username with password”。 在“Username”字段中输入您的 Github 用户名。 在“Password”字段中输入您的 Github 个人访问令牌。 点击“Verify credentials”按钮以验证凭据是否有效。 如果验证成功,请点击“Save”按钮保存更改。 3.jenkins映射docker 12345# 如果docker run jenkins 没有指定# 这里就不能打包,就是因为在jenkins里的容器中,没有安装对象,使用了-v # 就是把jenkins里所需要的docker映射到宿主docker中-v /var/run/docker.sock:/var/run/docker.sock \-v $(which docker):/usr/bin/docker 4.安装插件没有成功 需要到插件中心,在可更新和可选插件里,一个一个手动去搜索安装,如果还有问题,就需要更新jenkins 5.npm install需要权限 1Unable to save binary /var/lib/jenkins/workspace/mymanager-/node_modules/node-sass/vendor/linux-x64-83 : Error: EACCES: permission denied, mkdir '/var/lib/jenkins/workspace/lottery-web-24kai-ausk3/node_modules/node-sass/vendor' 修改端口123456789101112131415161718192021222324252627282930# 第一步sudo vim /etc/init.d/jenkins# 8088改成想要的check_tcp_port "http" "$HTTP_PORT" "8088" || return 1# 第二步sudo vim /etc/default/jenkins# 8088改成想要的HTTP_PORT=8088# 第三步vim /lib/systemd/system/jenkins.serviceEnvironment="JENKINS_PORT=80"# 执行sudo systemctl daemon-reloadsudo systemctl start jenkinssudo systemctl status jenkins# 这个时候就启动报错,然后接着修改vim /lib/systemd/system/jenkins.service# 本来是jenkins的,改成rootUser=rootGroup=root# 执行,就可以了,不知道为啥sudo systemctl daemon-reloadsudo systemctl start jenkinssudo systemctl status jenkins jenkins使用root账号登录设置1 设置2 权限管理1.安装插件,Role-based Authorization Strategy 2.点击 管理系统–>安全段落下的–>全局安全配置,选中 3.管理系统–>安全段落下的 就会多一个功能

2022-11-19
Linux软件
JumpSserver设置SFTP根目录3.0版本设置文件管理 克隆一份Linux平台 修改或者创建资产的时候,选择该克隆的平台,在资产这里不能设置SFTP路径 安装vmware tool123运行 ./vmware-install.pl一直按yes,按完一段之后就会有暂时的停顿运行命令 reboot 安装Wget最开始的Centos7 感觉什么都没有wget也没有 1234567#远程下载的工具yum -y install wget#bash: make: command not found 是因为缺少这些工具yum -y install gcc automake autoconf libtool makeyum -y install wget 安装LNMP环境12345678910111213141516171819202122232425262728293031323334353637383940414243# 更新源apt-get update && apt-get dist-upgrade -y# 安装nginxapt-get install nginx# 安装php-fpm和常用php扩展apt-get install php-fpm php-gd php-mbstring php-curl php-xml php-mcrypt php-mysql php-zip php-json php-redis php-memcached# 安装mysqlapt-get install mysql-server# 建立测试站点# 1.我们在/var/www下面新建一个test目录,作为站点目录。 运行以下命令:mkdir /var/www/test# 2.新建php入口文件echo '<?php echo 1;' > /var/www/test/index.php# 3.授权给fpm用户www-data,使fpm进程可以访问站点文件chown -R www-data:www-data /var/www/test && chmod -R 755 /var/www/test# 4.设置nginx站点配置,在/etc/nginx/conf.d新增一个test.conf文件,并写入以下内容# 这个配置表示站点监听80端口,网站根目录为/var/www/test,入口文件为index.php,通过php-fpm进程来执行php脚本。server { listen 80 default_server; listen [::]:80 default_server; root /var/www/test; index index.php index.html index.htm; server_name _; location / { try_files $uri $uri/ =404; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.0-fpm.sock; }}# 5.重新加载nginx -t && nginx -s reload# 6.访问试试看 Ubuntu卸载Apache123456789101112# 删除apache$ sudo apt-get --purge remove apache2$ sudo apt-get --purge remove apache2.2-common$ sudo apt-get autoremove# 找到没有删除掉的配置文件,一并删除$ sudo find /etc -name "*apache*" -exec rm -rf {} \;$ sudo rm -rf /var/www# 重装apache2$ sudo apt-get install apache2$ sudo /etc/init.d/apache2 restart Ubuntu安装软件指定版本号 123456# 安装软件的时候,机器上安装的依赖版本可能高于软件本身需要的The following packages have unmet dependencies: libpcre3-dev : Depends: libpcre3 (= 2:8.39-12build1) but 2:8.44-1+ubuntu18.04.1+deb.sury.org+1 is to be installed Depends: libpcrecpp0v5 (= 2:8.39-12build1) but 2:8.44-1+ubuntu18.04.1+deb.sury.org+1 is to be installedsudo apt install libpcrecpp0v5=2:8.39-12build1 libpcre3=2:8.39-12build1 Gitlab安装https://ken.io/note/centos7-gitlab-install-tutorial#H3-11 Zsh安装1234567891011121314$ sudo apt-get install zsh# 验证是否安装成功$ zsh --version# 将 Zsh 设为默认 Shell$ sudo chsh -s $(which zsh)# 安装oh my zshhttps://ohmyz.sh/# 注销当前用户重新登录# 若输出为 /bin/zsh 或者 /usr/bin/zsh 则表示当前默认 Shell 是 Zsh$ echo $SHELL 安装confluenceatlassian的相关软件 confluence下载地址 安装: 1234567docker run -v \ /root/confluence/:/var/atlassian/application-data/confluence/ \ --name="confluence" \ -d \ -p 8090:8090 \ -p 8091:8091 \ atlassian/confluence-server 破解: 1./opt/atlassian/confluence/confluence/WEB-INF/lib/atlassian-extras-decoder-v2-3.4.1.jar备份2.atlassian-extras-decoder-v2-3.4.1.jar重命名为atlassian-extras-2.4.jar并下载到本地 (和破解工具放在同一目录)3.下载破解工具confluence_keygen.jar,在上面的超链接下载 4.将已被破解的jar包atlassian-extras-2.4.jar重名为atlassian-extras-decoder-v2-3.4.1.jar 并放置在原路径/opt/atlassian/confluence/confluence/WEB-INF/lib 5.下载mysql-connector-java-5.1.32-bin.jar 上传/opt/atlassian/confluence/confluence/WEB-INF/lib 6.开始安装到需要授权码 相关报错: 12启动发生报错 "Spring Application context has not been set"rm -f /var/atlassian/application-data/confluence/confluence.cfg.xml Nmap找出活跃的主机123nmap -sP 192.168.41.136nping --echo-client "public" echo.nmap.org 查看打开的端口nmap 192.168.41.136 网络软件清理网络DNS缓存 检查nameserver有没有生效 DNS生效的国家 IP查询 发送文件到Kindle VIMvim的配置文件设置123456789# 先复制一份vim配置模板到个人目录下cp /usr/share/vim/vimrc ~/.vimrc# 编辑vi ~/.vimrc# 添加syntax on # 开启高亮set nu! # 默认开启行号 行号1set nu 过滤注释1cat redis.conf |grep -v '#' |grep -v '^$' >redis-6237.conf 多行注释123451 Ctrl+v进入v模式2 上下方向键选中要注释的行3 shift+i(即大写的I)行首插入4 输入注释符//5 按esc返回 反注释1231 Ctrl+v进入v模式2 上下方向键选中要注释的行,左右键选择要删除的字符//3 按d删除 格式化1234# gg 跳转到第一行# shift+v 转到可视模式# shift+g 全选# 按下=号 删除#开头的行1:g/^#/d SSH安装ssh12345678# 判断Ubuntu是否安装了ssh服务,检查有没有可以看到“sshd”ps -e | grep ssh# 安装ssh服务,输入命令sudo apt-get install openssh-server# 启动服务sudo /etc/init.d/ssh start SSH配置文件设置1234567891011121314vim /etc/ssh/sshd_config# 这是设置允许root登陆PermitRootLogin prohibit-password ===> PermitRootLogin yes# 这是设置允许使用账号密码登录# 不能只注释,注释会不起作用,还是可以用密码登录PasswordAuthentication no ===> PasswordAuthentication yes# 允许用证书登录方式PubkeyAuthentication yes# 重启ssh服务sudo service ssh reload SSH连接,key失效1234567891011121314λ ssh [email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!Someone could be eavesdropping on you right now (man-in-the-middle attack)!It is also possible that a host key has just been changed.The fingerprint for the ECDSA key sent by the remote host isSHA256:RIqSp3Pd94k4PPQcDtKAzK0sQbf4VWffKGwy/nvO8Kw.Please contact your system administrator.Add correct host key in C:\\Users\\Owner/.ssh/known_hosts to get rid of this message.Offending ECDSA key in C:\\Users\\Owner/.ssh/known_hosts:12ECDSA host key for 10.19.44.12 has changed and you have requested strict checking.Host key verification failed. 解决方法:找到.ssh文件下的known_hosts,删除相关ip的行 生成证书1234567891011121314151617181920# 客户端生成秘钥ssh-keygen# ssh目录的文件# id_rsa,私钥文件。不应该分享给任何人。私钥文件通常以 PEM 格式存储。# id_rsa.pub,公钥文件。公钥可以公开分享,用于配置在你需要访问的服务器上。服务器使用公钥来加密信息,私钥可以解密。# known_hosts, 文件存储了你之前连接过的所有服务器的主机密钥。这些密钥用于验证服务器的身份,以防止中间人攻击。每次你连接一个新的服务器,服务器的公钥会被添加到这个文件中。# known_hosts.old,是 `known_hosts` 文件的备份。每当 `known_hosts` 文件更新时,旧版本会被保存为 `known_hosts.old`。这可以作为一个安全机制,如果新的 `known_hosts` 文件出现问题,可以回滚到旧版本。➜ .ssh ll /Users/anthony/.ssh-rw-------@ 1 anthony staff 1.6K 6 8 21:50 id_rsa -rw-r--r--@ 1 anthony staff 425B 6 8 21:50 id_rsa.pub-rw-------@ 1 anthony staff 3.0K 6 8 21:24 known_hosts -rw-------@ 1 anthony staff 2.3K 6 8 21:23 known_hosts.old# 把公钥拷贝到服务器,这次是要输入密码ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote_host# 使用证书登录服务器# 实验的时候有个问题,如果不指定证书登录的命令,还是会提示输入密码ssh -i ~/.ssh/id_rsa_server2 ubuntu@your_server_ip2 root账号登录并且配置证书12345678910111213# 已经使用别的用户(账户名是:anthony)登录了服务器之后,再执行sudo passwd root# 第一次输入anthony用户的密码# 第二次输入新密码# 第三次再次输入新密码# 修改配置文件,让root用户可以登录,看上面的配置# 客户端上传rsa公钥,留意这里是root的账户的路径cat ~/.ssh/id_rsa.pub | ssh [email protected] 'cat >> /root/.ssh/authorized_keys'# 然后就可以使用root账户和证书登录了# 证书本身是不区分用户名,只认是不是一对公钥还是私钥 root登录之后没有高亮12cp /home/kali/.bashrc /rootsource .bashrc oh-my-zsh安装oh-my-zsh123456789# 配置文件位置vim ~/.zshrc# 配置主题# jonathan 是主题的名字ZSH_THEME="jonathan"# 配置插件,空格分开 插件的名字plugins=(git zsh-syntax-highlighting zsh-autosuggestions) oh my zsh插件zsh-syntax-highlighting高亮语法,如图,输入正确语法会显示绿色,错误的会显示红色,使得我们无需运行该命令即可知道此命令语法是否正确 1git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting plugins=(其他的插件 zsh-syntax-highlighting) zsh-autosuggestions自动补全 只需输入部分命令即可根据之前输入过的命令提示,按右键→即可补全 1git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions plugins=(其他的插件 zsh-syntax-highlighting) Shell设置别名经常要用命令行,进入到某个目录 编辑你的 Shell 配置文件,例如 Bash 的配置文件是 ~/.bashrc 或 ~/.bash_profile,Zsh 的配置文件是 ~/.zshrc。 添加 alias work='cd /path/to/your/work/directory' 运行 source ~/.bashrc 或 source ~/.zshrc 来使配置生效。 终端中输入 work 命令,就会进入你设置的工作目录 设置环境变量12345# 设置环境变量export http_proxy=http://127.0.0.1:3128# 删除环境变量unset http_proxy curl换行1curl http://www.baidu.com -w '\n' curl请求不校验证书12345678# 报错信息# curl failed to verify the legitimacy of the server and therefore could not# establish a secure connection to it. To learn more about this situation and# how to fix it, please visit the web page mentioned above.curl -k https://random.com# 或者curl -insecure https://random.com 脚本首行1#!/bin/bash 脚本变量1234# shell脚本给变量赋值的时候 = 两边不能加空格your_name="runoob"# 使用双引号拼接greeting="hello, "$your_name" !" 判断Linux shell脚本之 if条件判断_doiido的专栏-CSDN博客 判断数值 命令 解释 [ INT1 -eq INT2 ] INT1和INT2两数相等返回为真 ,= [ INT1 -ne INT2 ] INT1和INT2两数不等返回为真 ,<> [ INT1 -gt INT2 ] INT1大于INT2返回为真 ,> [ INT1 -ge INT2 ] INT1大于等于INT2返回为真,>= [ INT1 -lt INT2 ] INT1小于INT2返回为真 ,< [ INT1 -le INT2 ] INT1小于等于INT2返回为真,<= 字符串判断 命令 解释 [ -z STRING ] 如果STRING的长度为零则返回为真,即空是真 [ -n STRING ] 如果STRING的长度非零则返回为真,即非空是真 [ STRING1 ] 如果字符串不为空则返回为真,与-n类似 [ STRING1 == STRING2 ] 如果两个字符串相同则返回为真 [ STRING1 != STRING2 ] 如果字符串不相同则返回为真 [ STRING1 < STRING2 ] 如果 “STRING1”字典排序在“STRING2”前面则返回为真。 [ STRING1 > STRING2 ] 如果 “STRING1”字典排序在“STRING2”后面则返回为真。 12345678910111213#!/bin/shSTRING=if [ -z "$STRING" ]; then echo "STRING is empty"fiif [ -n "$STRING" ]; then echo "STRING is not empty"fi# 结果是:STRING is empty

2022-11-19
Nginx
Docker安装 Nginx123456789101112131415# 简单的docker run --name nginx-test \ -p 8080:80 \ -d \ nginx# 正式的docker run -d \ -p 443:443 \ -p 80:80 \ --name nginx \ -v /home/nginx/www:/usr/share/nginx/html \ -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \ -v /home/nginx/logs:/var/log/nginx \ nginx Ubuntu安装Nginx1234567891011121314151617181920212223242526272829# Ubuntu安装依赖sudo apt-get install libpcre3 libpcre3-dev openssl libssl-dev zlib1g-dev# Ubuntu 如果还缺少依赖apt-get install build-essential# Centos安装依赖yum install -y gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel# 进入到解压的文件cd ./nginx-1.16./configure --prefix=/url/local/nginx#或者./configure# 如果需要指定模块./configure --add-module=../nginx-rtmp-module#然后目录下就多了一个nginx文件make && make install#启动cd ../nginx/sbin./nginx# 配置文件目录所有的配置文件都在/etc/nginx下,并且每个虚拟主机已经安排在了/etc/nginx/sites-available下程序文件在/usr/sbin/nginx日志放在了/var/log/nginx中并已经在/etc/init.d/下创建了启动脚本nginx默认的虚拟主机的目录设置在了/var/www/nginx-default (有的版本 默认的虚拟主机的目录设置在了/var/www, 请参考/etc/nginx/sites-available里的配置) Nginx 常用命令12345678910111213141516171819202122# 启动nginxstart nginx# 或者nginx# 修改配置后重新加载生效nginx -s reload# 重新打开日志文件nginx -s reopen# 测试nginx配置文件是否正确nginx -t -c /path/to/nginx.conf# 快速停止nginxnginx -s stop# 完整有序的停止nginxnginx -s quit# 指定配置文件启动nginx -c /home/anthony/nginx.conf Nginx 配置模板123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133#user nobody;# 设置 <= cpu核数,一般设置成cpu*核数worker_processes 1;# 指定错误日志文件存放路径,错误日志级别可选项为【debug|info|notice|warn|error|crit】error_log logs/warn.log warn;# 指定pid存放路径 nginx启动后的进程IDpid logs/nginx.pid;# 工作模式及连接数上限#user nobody;# 设置 <= cpu核数worker_processes 1;# 指定错误日志文件存放路径,错误日志级别可选项为【debug|info|notice|warn|error|crit】# error_log logs/error.log error;# 指定pid存放路径 nginx启动后的进程ID# pid logs/nginx.pid;# 工作模式及连接数上限events { # 使用网络I/O模型,Linux系统推荐使用epoll模型,FreeBSD系统推荐使用kqueue;window下不指定 # user epoll; # 允许的最大连接数 worker_connections 1024;}# 设定http服务器,利用他的反向代理功能提供负载均衡支持http { # 设定mime类型 include 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"'; client_header_buffer_size 1k; large_client_header_buffers 4 4k; # access_log logs/info.log main; # # 设定access log send_timeout 3m; sendfile on; tcp_nopush on; tcp_nodelay on; # 这个参数表示http连接超时时间,默认是65s。要是上传文件比较大,在规定时间内没有上传完成,就会自动断开连接!所以适当调大这个时间。 keepalive_timeout 0; keepalive_timeout 5000; # 开启gzip模块 gzip on; gzip_min_length 1100; gzip_buffers 4 8k; gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php application/javascript application/json; output_buffers 1 32k; postpone_output 1460; server_names_hash_bucket_size 128; client_header_timeout 3m; #调大点 client_body_timeout 3m; #调大点 client_max_body_size 200m; #主要是这个参数,限制了上传文件大大小 #client_body_buffer_size 1024; fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; fastcgi_buffer_size 64k; fastcgi_buffers 4 64k; fastcgi_busy_buffers_size 128k; fastcgi_temp_file_write_size 128k; gzip_http_version 1.1; gzip_comp_level 2; gzip_vary on; #设定虚拟主机 server { listen 80; server_name ap.mmzcg.com; # 设置url编码格式,解决参数中文乱码问题 charset UTF-8; # 设定本虚拟主机的访问日志 # access_log logs/host.access.log main; # 对 "/" 启用负载均衡 location / { # 设定代理访问地址 proxy_pass http://127.0.0.1:30000/; # 配置SSL证书 # ssl_certificate /etc/nginx/conf.d/ssl/STAR.huihuang200.com.crt; # ssl_certificate_key /etc/nginx/conf.d/ssl/STAR.huihuang200.com.key; # ssl_session_timeout 5m; # ssl_session_cache shared:SSL:10m; # ssl_protocols TLSv1 TLSv1.1 TLSv1.2 SSLv2 SSLv3; # ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; # ssl_prefer_server_ciphers on; # ssl_verify_client off; # 解决ajax跨域问题 add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allow-Credentials' 'true'; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type'; # 保留用户真实信息 proxy_set_header Host $host:$server_port; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 允许客户端请求的最大单个文件字节数 client_max_body_size 100m; # 缓冲区代理缓冲用户端请求的最大字节数,可以理解为先保存到本地再传给用户 client_body_buffer_size 1280k; # nginx跟后端服务器连接超时时间,发起握手等候响应超时时间(代理连接超时) proxy_connect_timeout 5; # 连接成功后 等待后端服务器响应时间 其实已进入后端的排队之中等候处理 proxy_read_timeout 60; # 代理请求缓存区 这个缓存区间会保存用户的头信息一共Nginx进行规则处理 一般只要能保存下头信息即可 proxy_send_timeout 30; # 同上 告诉Nginx保存单个用的几个Buffer最大用多大空间 proxy_buffer_size 256k; proxy_buffers 4 256k; # 如果系统很忙的时候可以申请国内各大的proxy_buffers 官方推荐 *2 proxy_busy_buffers_size 256k; # proxy 缓存临时文件的大小 proxy_temp_file_write_size 256k; proxy_next_upstream error timeout invalid_header http_500 http_503 http_404; proxy_max_temp_file_size 128m; } }} Nginx日志管理123456789101112131415161718#access_log logs/access.log main;# nginx的默认配置,如果在安装的nginx里没有看到这个,也没有关系#log_format main '$remote_addr - $remote_user [$time_local] "$request" '# '$status $body_bytes_sent "$http_referer" '# '"$http_user_agent" "$http_x_forwarded_for"';server { listen 80; location / { root my; index index.html } #配置日志, main 就是log_format 后面的名字 # 该server的访问日志的文件是logs/access.log,使用的是main格式 access_log logs/access.log main;} 推荐的配置 1234log_format main '$remote_addr - $remote_user [$time_local] "$request" $http_host ' '$status $request_length $body_bytes_sent "$http_referer" ' '"$http_user_agent" $request_time'; remote_addr : 客户端地址 remote_user : 客户端用户名 time_local : 服务器时间 request : 请求内容,包括方法名,地址,和http协议 http_host : 用户请求是使用的http地址 status : 返回的http 状态码 request_length : 请求大小 body_bytes_sent : 返回的大小 http_referer : 来源页 http_user_agent : 客户端名称 request_time : 整体请求延时 日志书写规则 一行要用单引号包起来,一行一个,换行也不需要什么连接的符号 location匹配= 精准匹配不写 一般匹配~ 正则匹配location proxy_pass 后面的url 加与不加/的区别 server_name匹配通配符匹配12345678910111213server { listen 80; server_name *.example.org; ...`}server { listen 80; server_name mail.*; ...} 通配符格式中的*号只能在域名的开头或结尾,并且*号两侧只能是.这些无效: www.*.example.org w*.example.org *号可以匹配多个域名部分,*.example.org可以匹配到: www.example.org www.sub.example.org .example.org是比较特殊的通配符格式, 可以同时匹配 example.org *.example.org。 正则匹配⁉️ 不适用我自己 精确匹配12345server { listen 80; server_name example.org www.example.org; ...} 特殊匹配格式 server_name ""; 匹配Host请求头不存在的情况。 server_name "-"; 无任何意义。 server_name "*"; 它被错误地解释为万能的名称。 它从不用作通用或通配符服务器名称。相反,它提供了server_name_in_redirect指令现在提供的功能。 现在不建议使用特殊名称“ *”,而应使用server_name_in_redirect指令。 匹配顺序 精确的名字 以*号开头的最长通配符名称,例如 *.example.org 以号结尾的最长通配符名称,例如 mail. 第一个匹配的正则表达式(在配置文件中出现的顺序) 优化 尽量使用精确匹配; 当定义大量server_name时或特别长的server_name时,需要在http级别调整server_names_hash_max_size和server_names_hash_bucket_size,否则nginx将无法启动。 Nginx报错1.服务器重启之后,执行 nginx -t 是OK的,然而在执行 nginx -s reload 的时候报错nginx: [error] invalid PID number "" in "/run/nginx.pid" 1234# 解决办法:nginx -c /etc/nginx/nginx.confnginx.conf文件的路径可以从nginx -t的返回中找到。nginx -s reload 2.a duplicate default server for 0.0.0.0:80nginx: [emerg] a duplicate default server for 0.0.0.0:80 in /etc/nginx/sites-enabled/gitlab:10 123删除/etc/nginx/sites-available/default文件,重新启动服务即可nginx -t :检查配置文件是否出错 3.403123打开nginx.conf例子:vim /etc/nginx/nginx.conf把 user 用户名 改为 user root 或 其它有高权限的用户名称即可 Nginx应用Acme.sh的使用123456789101112131415161718192021222324252627282930313233343536# 下载软件curl https://get.acme.sh | sh# 设置别名 alias:alias acme.sh=~/.acme.sh/acme.sh # 切换 Let's Encrypt,默认使用 ZeroSSLacme.sh --set-default-ca --server letsencrypt# 执行,会打印配置域名的TXTacme.sh --issue -d baidu.me --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please# 配置好执行,再执行acme.sh --issue -d baidu.me --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please --renew# --nginx 就是指定域名的配置文件Your cert is in: /root/.acme.sh/baidu.me_ecc/baidu.me.cerYour cert key is in: /root/.acme.sh/baidu.me_ecc/baidu.me.keyThe intermediate CA cert is in: /root/.acme.sh/baidu.me_ecc/ca.cerAnd the full chain certs is there: /root/.acme.sh/baidu.me_ecc/fullchain.cer# 查看申请的证书root@jenkins-jumpserver-nginx:~/.acme.sh# acme.sh --listMain_Domain KeyLength SAN_Domains CA Created Renewbaidu "ec-256" no LetsEncrypt.org 2023-09-17T11:52:22Z 2023-11-15T11:52:22Z# 续期证书# 证书默认是90天,如需强制更新证书,则执行以下命令acme.sh --renew -d abc.xyz --force# acme.sh会自动为你创建 cronjob, 每天 0:00 点自动检测所有的证书, # 如果快过期了, 需要更新, 则会自动更新证书,使用以下命令可查看定时任务crontab -l# 升级 acme.sh 到最新acme.sh --upgrade 12345# CFexport CF_Key="xxxxxxx" export CF_Email="CF账号的邮箱"acme.sh --issue -d "baidu.com" --dns dns_cf 建立软连接1sudo ln -s /etc/nginx/sites-available/domain-one.com /etc/nginx/sites-enabled/ 快速部署静态应用1234567891011121314# 首尾配置暂时忽略server { listen 8080; server_name localhost; location / { # 设置为个人项目的根目录路径 root /usr/local/var/www/my-project; index index.html index.htm; # vue项目404让前端路由处理 try_files $uri $uri/ /index.html; }}# 首尾配置暂时忽略 跨域1234567891011121314# 首尾配置暂时忽略server { listen 8080; server_name localhost; location / { # 跨域代理设置 proxy_pass http://www.proxy.com; # 要实现跨域的域名 add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS'; add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization'; }}# 首尾配置暂时忽略 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748# 第二种server { listen 80 default_server; server_name _ www.*; location / { index index.html; root /home/ubuntu/sabong-server-front; try_files $uri $uri/ /index.html; } location /api/ { if ($request_method = 'OPTIONS') { add_header 'Access-Control-Allow-Origin' *; add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS'; add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,language,If-Modified-Since,Cache-Control,Content-Type'; add_header 'Access-Control-Allow-Credentials' true; add_header 'Access-Control-Max-Age' 86400; return 200; } add_header 'Access-Control-Allow-Origin' *; add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS'; add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,language,If-Modified-Since,Cache-Control,Content-Type'; add_header 'Access-Control-Allow-Credentials' true; add_header 'Access-Control-Max-Age' 86400; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forward-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-Nginx-Proxy true; proxy_pass http://172.31.41.206:9001/; } location /ws { proxy_pass http://172.31.41.206:9006/ws; proxy_http_version 1.1; proxy_read_timeout 360s; proxy_redirect off; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host:$server_port; 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; }} Gzip压缩1234567http { # 配置gzip压缩 gzip on; gzip_min_length 1000; # 设定压缩的临界点 gzip_comp_level 3; # 压缩级别 gzip_types text/plain application/xml; # 要压缩的文件类别} 转发Vue项目1234567891011121314151617181920server { listen 80 default_server; server_name _; location / { index index.html; root /home/ubuntu/sabong-server-front; # nginx 转发给前端判断是不是404 try_files $uri $uri/ /index.html; } location /api/ { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-Nginx-Proxy true; proxy_pass http://172.31.41.206:9001/; }} 转发Websocket123456789101112location /ws { proxy_pass http://172.31.41.206:9006/ws; proxy_http_version 1.1; proxy_read_timeout 360s; proxy_redirect off; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host:$server_port; 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;} 转发Redis只知道这么配置,不知道怎么给redis配置上域名 1234567891011121314151617181920212223242526272829303132user www-data;worker_processes auto;pid /run/nginx.pid;include /etc/nginx/modules-enabled/*.conf;events { worker_connections 768; # multi_accept on;}http{ # ...}# 要跟http统计,旧的版本没有steram模块,需要编译的时候加# 下载最新的版本肯定是有stream模块的stream { upstream redis { # myredis.godjfp.com 要被转发的Redis地址 # 6379:redis自己设置的端口是多少,就是多少 server myredis.godjfp.com:6379 max_fails=3 fail_timeout=30s; } server { # 公网访问的端口 listen 6379; proxy_connect_timeout 1s; proxy_timeout 3s; proxy_pass redis; }} 图片上传post上传文件,出现413错误码 解决方案 1234#允许客户端请求的最大单文件字节数client_max_body_size 10m; #缓冲区代理缓冲用户端请求的最大字节数client_body_buffer_size 128k; HTTPS跳转1234567891011121314151617181920212223242526272829303132333435363738394041424344454647server { listen 80; listen 443 ssl; # 配置SSL证书 server_name abc.xyz; # 如果是http,就跳转https,注意nginx配置文件的不同,可能会出现重定向次数过多 if ($scheme = http) { return 301 https://$host$request_uri; } location / { proxy_pass http://192.168.0.2:8084/; }}# 比如配置强制跳转https,导致重定向次数过多server { listen 80; listen 443 ssl; # 配置SSL证书 server_name abc.xyz; # 如果是http,就跳转https,注意nginx配置文件的不同,可能会出现重定向次数过多 # 比如这个配置 return 301 https://$server_name$request_uri; # 比如这个配置 rewrite ^(.*)$ https://$host$1 permanent; location / { proxy_pass http://192.168.0.2:8084/; }}# 上面两种导致重定向的次数过多,需要修改配置文件,比如下面的配置文件就可以server { listen 80; server_name your_domain.com www.your_domain.com; return 301 https://$host$request_uri;}server { listen 443 ssl; server_name your_domain.com www.your_domain.com; ssl_certificate /path/to/your/certificate.crt; ssl_certificate_key /path/to/your/private_key.key;} 代理JumpServer1234567891011121314151617181920212223server { listen 80 default_server; listen [::]:80 default_server; root /var/www/html; index index.html index.htm index.nginx-debian.html; server_name _; location / { # 比如服务器里的JumpServer的端口已经设置成了8083 proxy_pass http://127.0.0.1:8083/; # 按照官方的配置,需要使用WebSocket,如果不配置的话,访问JumpServer网页会提示WebSocket报错 proxy_http_version 1.1; proxy_buffering off; proxy_request_buffering off; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; }} 官方文档:使用Nginx代理JumpServer 代理Jenkins1234567891011121314151617181920212223242526272829303132333435363738server { listen 80 default_server; listen [::]:80 default_server; server_name _; location / { proxy_pass http://127.0.0.1:8083/; }}# 如果使用这样的配置,会有问题,比如配置的域名是baidu.com# 当访问baidu.com会正常访问,当登录之后,网页地址就变成http://127.0.0.1:8083/# 需要改成一下配置server { listen 80 default_server; listen [::]:80 default_server; server_name _; location / { proxy_pass http://127.0.0.1:8080/; # 下面这几个配置,访问Github会403 proxy_http_version 1.1; http2_push_preload on; # Enable http2 push proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Real-IP $remote_addr; # 这个配置又是正常的,要看看这个请求头是干嘛的了 proxy_set_header X-Rea $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-Nginx-Proxy true; }} 12345678910111213141516171819202122232425262728293031server { listen 80; server_name _; location /api/ { client_max_body_size 100m; client_body_buffer_size 50m; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://172.31.2.105:8083/; } # 代理swagger稳定 openapi3的版本,springboot3的版本 location /v3/api-docs { client_max_body_size 100m; client_body_buffer_size 50m; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://172.31.2.105:8083/v3/api-docs; } location / { try_files $uri $uri/ /index.html; root /usr/share/nginx/html/manager/dist/; index index.html index.htm; } } SRSDocker方式运行1234docker run -p 1935:1935 -p 1985:1985 -p 8080:8080 ossrs/srs:latest# 测试# 访问:[http://192.168.254.180:8080/](http://192.168.254.180:8080/) SRS安装参考https://cloud.tencent.com/developer/article/1693951 Mac改成只播放系统声音Mac obs推流直播无声音解决方法_OBS教程_OBS Open Broadcaster Software OBS权限监听浏览器
评论