<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>frp</title>
    <link>/frpdoc/en/</link>
    <description>Recent content on frp</description>
    <generator>Hugo</generator>
    <language>en</language>
    <atom:link href="/frpdoc/en/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Common Configuration</title>
      <link>/frpdoc/en/docs/reference/common/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/frpdoc/en/docs/reference/common/</guid>
      <description>&lt;h3 id=&#34;logconfig&#34;&gt;LogConfig&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Field&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;to&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Log output file path. If set to console, logs will be printed to standard output.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;level&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Log level. Options are trace, debug, info, warn, error. Default level is info.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;maxDays&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;int&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Maximum days to retain log files, default is 3 days.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;disablePrintColor&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;bool&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Disable log colors in standard output.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;webserverconfig&#34;&gt;WebServerConfig&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Field&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;addr&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;webServer listening address, default is 127.0.0.1.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;port&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;int&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;webServer listening port.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;user&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;HTTP BasicAuth username.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;password&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;HTTP BasicAuth password.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;assetsDir&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Static resource directory. Dashboard resources are packaged in the binary file by default. Use this parameter to specify custom static resources.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;pprofEnable&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;bool&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Enable Go HTTP pprof for application debugging.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;tls&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;/frpdoc/en/docs/reference/common/#tlsconfig&#34;&gt;TLSConfig&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;TLS related configuration for Dashboard HTTPS.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;tlsconfig&#34;&gt;TLSConfig&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Field&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;certFile&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;TLS certificate file path.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;keyFile&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;TLS key file path.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;trustedCaFile&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;CA certificate file path.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;serverName&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;TLS Server name.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;quicoptions&#34;&gt;QUICOptions&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Field&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;keepalivePeriod&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;int&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Default value is 10 seconds.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;maxIdleTimeout&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;int&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Default value is 30 seconds.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;maxIncomingStreams&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;int&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Default value is 100000.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;portsrange&#34;&gt;PortsRange&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Field&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;start&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;int&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Starting port.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;end&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;int&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Ending port.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;single&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;int&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Single port.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;headeroperations&#34;&gt;HeaderOperations&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Field&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;set&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;map[string]string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Set specified KV values in Header.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;httpheader&#34;&gt;HTTPHeader&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Field&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;name&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Header name.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;value&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Header value.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;valuesource&#34;&gt;ValueSource&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Field&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;type&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Data source type. Options are &amp;ldquo;file&amp;rdquo; and &amp;ldquo;exec&amp;rdquo;.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;file&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;/frpdoc/en/docs/reference/common/#filesource&#34;&gt;FileSource&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;File data source configuration, required when type is &amp;ldquo;file&amp;rdquo;.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;exec&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;/frpdoc/en/docs/reference/common/#execsource&#34;&gt;ExecSource&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;External command data source configuration, required when type is &amp;ldquo;exec&amp;rdquo;. Requires &lt;code&gt;--allow-unsafe=TokenSourceExec&lt;/code&gt; flag at startup.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;filesource&#34;&gt;FileSource&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Field&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;path&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;File path.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;execsource&#34;&gt;ExecSource&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Field&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;command&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Path to the command to execute.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;args&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;[]string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;List of command arguments.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;env&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;[]&lt;a href=&#34;/frpdoc/en/docs/reference/common/#execenvvar&#34;&gt;ExecEnvVar&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Additional environment variables.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;execenvvar&#34;&gt;ExecEnvVar&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Field&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;name&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Environment variable name.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;value&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Environment variable value.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;nattraversalconfig&#34;&gt;NatTraversalConfig&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Field&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;disableAssistedAddrs&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;bool&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Disable assisted connections using local network interface addresses. When enabled, only uses STUN-discovered public addresses for NAT hole punching, avoiding potentially slow local network interfaces (e.g., VPN). Default is false.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;</description>
    </item>
    <item>
      <title>Communication Security and Optimization</title>
      <link>/frpdoc/en/docs/features/common/network/network/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/frpdoc/en/docs/features/common/network/network/</guid>
      <description>&lt;h2 id=&#34;encryption-and-compression&#34;&gt;Encryption and Compression&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;Note: When TLS is enabled between frpc and frps, traffic will be globally encrypted, and encryption on individual proxies is no longer needed. This is enabled by default in newer versions.&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Each proxy can choose whether to enable encryption and compression features.&lt;/p&gt;&#xA;&lt;p&gt;The encryption algorithm uses aes-128-cfb, and the compression algorithm uses snappy.&lt;/p&gt;&#xA;&lt;p&gt;Specify in each proxy&amp;rsquo;s configuration using the following parameters:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-toml&#34; data-lang=&#34;toml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;proxies&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;name&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;ssh&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;type&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;tcp&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;localPort&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;22&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;remotePort&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;6000&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;transport&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;useEncryption&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;transport&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;useCompression&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;By setting &lt;code&gt;transport.useEncryption = true&lt;/code&gt;, the communication content between frpc and frps will be encrypted during transmission, effectively preventing transmission content from being intercepted.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using systemd</title>
      <link>/frpdoc/en/docs/setup/systemd/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/frpdoc/en/docs/setup/systemd/</guid>
      <description>&lt;p&gt;On Linux systems, using &lt;code&gt;systemd&lt;/code&gt; can conveniently control the start, stop, background running configuration, and boot auto-start of the frps server.&lt;/p&gt;&#xA;&lt;p&gt;Here are the specific operation steps:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Install systemd&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;If systemd is not yet installed on your Linux server, you can use package managers like &lt;code&gt;yum&lt;/code&gt; (for CentOS/RHEL) or &lt;code&gt;apt&lt;/code&gt; (for Debian/Ubuntu) to install it:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Install systemd using yum (CentOS/RHEL)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;yum install systemd&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Install systemd using apt (Debian/Ubuntu)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;apt install systemd&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Create frps.service file&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Custom TLS Protocol Encryption</title>
      <link>/frpdoc/en/docs/features/common/network/network-tls/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/frpdoc/en/docs/features/common/network/network-tls/</guid>
      <description>&lt;p&gt;&lt;code&gt;transport.useEncryption&lt;/code&gt; and &lt;code&gt;STCP&lt;/code&gt; functions can effectively prevent traffic content from being stolen during communication, but cannot determine whether the other party&amp;rsquo;s identity is legitimate, posing a risk of man-in-the-middle attacks. For this reason, frp supports traffic encryption between frpc and frps through TLS protocol, and supports client or server unidirectional verification, bidirectional verification, and other functions.&lt;/p&gt;&#xA;&lt;p&gt;When &lt;code&gt;transport.tls.force = true&lt;/code&gt; in &lt;code&gt;frps.toml&lt;/code&gt;, it means the server only accepts TLS connection clients, which is also a prerequisite for frps to verify frpc identity. If the content of &lt;code&gt;transport.tls.trustedCaFile&lt;/code&gt; in &lt;code&gt;frps.toml&lt;/code&gt; is valid, then &lt;code&gt;transport.tls.force = true&lt;/code&gt; will be enabled by default.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Modify HTTP Request Header</title>
      <link>/frpdoc/en/docs/features/http-https/header/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/frpdoc/en/docs/features/http-https/header/</guid>
      <description>&lt;h2 id=&#34;modify-host-header&#34;&gt;Modify Host Header&lt;/h2&gt;&#xA;&lt;p&gt;Normally, frp will not modify any forwarded data. However, some backend services will display different websites based on the Host field in HTTP request headers, such as nginx&amp;rsquo;s virtual host service. Enabling the Host Header modification feature can dynamically modify the Host field in HTTP requests. Note that this feature is only available for HTTP type proxies.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-toml&#34; data-lang=&#34;toml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# frpc.toml&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;proxies&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;name&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;web&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;type&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;http&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;localPort&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;80&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;customDomains&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;test.yourdomain.com&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;hostHeaderRewrite&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;dev.yourdomain.com&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The original Host field &lt;code&gt;test.yourdomain.com&lt;/code&gt; in the HTTP request will be replaced with &lt;code&gt;dev.yourdomain.com&lt;/code&gt; when forwarded to the backend service.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Server Configuration</title>
      <link>/frpdoc/en/docs/reference/server-configures/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/frpdoc/en/docs/reference/server-configures/</guid>
      <description>&lt;h3 id=&#34;serverconfig&#34;&gt;ServerConfig&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Field&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;auth&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;/frpdoc/en/docs/reference/server-configures/#authserverconfig&#34;&gt;AuthServerConfig&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Authentication configuration.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;bindAddr&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Server listening address for receiving frpc connections, default listens on 0.0.0.0.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;bindPort&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;int&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Server listening port, default value is 7000.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;kcpBindPort&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;int&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Server listening port for KCP protocol, used to receive frpc connections configured to use KCP protocol.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;quicBindPort&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;int&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Server listening port for QUIC protocol, used to receive frpc connections configured to use QUIC protocol.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;proxyBindAddr&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Proxy listening address, can make proxies listen on different network interface addresses, same as bindAddr by default.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;vhostHTTPPort&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;int&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Listening port for HTTP type proxies, must be enabled to support HTTP type proxies.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;vhostHTTPTimeout&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;int&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;ResponseHeader timeout for HTTP type proxies on the server side, default is 60s.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;vhostHTTPSPort&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;int&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Listening port for HTTPS type proxies, must be enabled to support HTTPS type proxies.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;tcpmuxHTTPConnectPort&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;int&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Listening port for tcpmux type proxies with httpconnect multiplexer.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;tcpmuxPassthrough&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;bool&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Whether to pass through CONNECT requests for tcpmux type proxies.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;subDomainHost&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Subdomain suffix.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;custom404Page&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Custom 404 error page address.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;sshTunnelGateway&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;/frpdoc/en/docs/reference/server-configures/#sshtunnelgateway&#34;&gt;SSHTunnelGateway&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;SSH tunnel gateway configuration.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;webServer&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;../common#webserverconfig&#34;&gt;WebServerConfig&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Server Dashboard configuration.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;enablePrometheus&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;bool&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Whether to provide Prometheus monitoring interface, will only take effect when webServer is also enabled.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;log&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;../common#logconfig&#34;&gt;LogConfig&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Log configuration.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;transport&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;/frpdoc/en/docs/reference/server-configures/#servertransportconfig&#34;&gt;ServerTransportConfig&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Network layer configuration.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;detailedErrorsToClient&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;bool&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Server returns detailed error information to client, default is true.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;maxPortsPerClient&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;int&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Limit the maximum number of simultaneous proxies for a single client, default is unlimited.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;userConnTimeout&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;int&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Timeout for waiting for client response after user establishes connection, in seconds, default is 10 seconds.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;udpPacketSize&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;int&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Maximum packet length supported when proxying UDP services, default is 1500. Server and client values need to be consistent.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;natholeAnalysisDataReserveHours&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;int&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Retention time for hole punching strategy data, default is 168 hours, i.e. 7 days.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;allowPorts&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;../common#portsrange&#34;&gt;[]PortsRange&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Server ports allowed for proxy binding.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;httpPlugins&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;/frpdoc/en/docs/reference/server-configures/#httppluginoptions&#34;&gt;[]HTTPPluginOptions&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Server HTTP plugin configuration.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;authserverconfig&#34;&gt;AuthServerConfig&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Field&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;method&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Authentication method. Options are token or oidc, default is token.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;additionalScopes&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;[]string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Additional scope for authentication information. Options are HeartBeats and NewWorkConns&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;token&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Effective when method is token. Client needs to set the same value to pass authentication. Mutually exclusive with tokenSource field.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;tokenSource&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;../common#valuesource&#34;&gt;ValueSource&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Configuration for loading token from file. Mutually exclusive with token field.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;oidc&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;/frpdoc/en/docs/reference/server-configures/#authoidcserverconfig&#34;&gt;AuthOIDCServerConfig&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;OIDC authentication configuration.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;authoidcserverconfig&#34;&gt;AuthOIDCServerConfig&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Field&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;issuer&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;audience&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;skipExpiryCheck&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;bool&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;skipIssuerCheck&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;bool&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;servertransportconfig&#34;&gt;ServerTransportConfig&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Field&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;tcpMuxKeepaliveInterval&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;int&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Heartbeat check interval time for tcp mux, in seconds.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;tcpKeepalive&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;int&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Keepalive interval time for underlying TCP connection with client, in seconds. Configure as negative number to disable.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;maxPoolCount&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;int&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Maximum connection pool size allowed for clients. If client configured value is greater than this value, it will be forcibly modified to the maximum value, default is 5.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;heartbeatTimeout&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;int&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Timeout for heartbeat connection between server and client, in seconds, default is 90 seconds.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;quic&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;../common#quicoptions&#34;&gt;QUICOptions&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;QUIC protocol configuration parameters.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;tls&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;/frpdoc/en/docs/reference/server-configures/#tlsserverconfig&#34;&gt;TLSServerConfig&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Server TLS protocol configuration.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;tlsserverconfig&#34;&gt;TLSServerConfig&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Field&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;force&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;bool&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Whether to only accept client connections with TLS enabled.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;../common#tlsconfig&#34;&gt;TLSConfig&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;TLS protocol configuration, embedded structure.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;httppluginoptions&#34;&gt;HTTPPluginOptions&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Field&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;name&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Plugin name.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;addr&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Plugin interface address.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;path&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Plugin interface path.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;ops&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;[]string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;List of operations that the plugin needs to take effect. For specific optional values, please refer to the server plugin documentation.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;tlsVerify&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;bool&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;When plugin address is HTTPS protocol, whether to verify the plugin&amp;rsquo;s TLS certificate, default is not to verify.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;sshtunnelgateway&#34;&gt;SSHTunnelGateway&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Field&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;bindPort&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;int&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;SSH server listening port.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;YES&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;privateKeyFile&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;SSH server private key file path. If empty, frps will read the private key file under autoGenPrivateKeyPath.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;autoGenPrivateKeyPath&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Private key file automatic generation path, default is ./.autogen_ssh_key. If the file does not exist or is empty, frps will automatically generate an RSA private key file and store it at this path.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;authorizedKeysFile&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;SSH client authorized key file path. If empty, SSH client authentication will not be performed. Non-empty can implement SSH passwordless login authentication.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;</description>
    </item>
    <item>
      <title>Client Configuration</title>
      <link>/frpdoc/en/docs/reference/client-configures/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/frpdoc/en/docs/reference/client-configures/</guid>
      <description>&lt;h3 id=&#34;clientconfig&#34;&gt;ClientConfig&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Field&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;/frpdoc/en/docs/reference/client-configures/#clientcommonconfig&#34;&gt;ClientCommonConfig&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Client common configuration.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;proxies&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;../proxy&#34;&gt;[]ProxyConfig&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Proxy configuration. Different proxy types correspond to different configurations, such as &lt;a href=&#34;../proxy#tcpproxyconfig&#34;&gt;TCPProxyConfig&lt;/a&gt; or &lt;a href=&#34;../proxy#httpproxyconfig&#34;&gt;HTTPProxyConfig&lt;/a&gt;.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;visitors&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;../visitor&#34;&gt;[]VisitorConfig&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Visitor configuration. Different visitor types correspond to different configurations, such as &lt;a href=&#34;../visitor#stcpvisitorconfig&#34;&gt;STCPVisitorConfig&lt;/a&gt;.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;clientcommonconfig&#34;&gt;ClientCommonConfig&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Field&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;auth&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;/frpdoc/en/docs/reference/client-configures/#authclientconfig&#34;&gt;AuthClientConfig&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Client authentication configuration.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;user&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Username. After setting this parameter, proxy names will be modified to {user}.{proxyName} to avoid proxy name conflicts with other users.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;serverAddr&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Address to connect to the server.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;serverPort&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;int&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Port to connect to the server, default is 7000.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;natHoleStunServer&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;STUN server address required for xtcp hole punching, default is stun.easyvoip.com:3478.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;dnsServer&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;DNS server address to use. By default, it uses the system-configured DNS server. Specifying this parameter can force replacement with a custom DNS server address.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;loginFailExit&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;bool&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Whether to exit after first login failure, default is true.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;start&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;[]string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Specify to enable partial proxies. When many proxies are configured but only some of them are desired to be enabled, this parameter can be used to specify them. Default is to enable all.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;log&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;../common#logconfig&#34;&gt;LogConfig&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Log configuration.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;webServer&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;../common#webserverconfig&#34;&gt;WebServerConfig&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Client AdminServer configuration.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;transport&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;/frpdoc/en/docs/reference/client-configures/#clienttransportconfig&#34;&gt;ClientTransportConfig&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Client network layer configuration.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;virtualNet&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;/frpdoc/en/docs/reference/client-configures/#virtualnetconfig&#34;&gt;VirtualNetConfig&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Virtual network configuration, Alpha feature.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;featureGates&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;map[string]bool&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Feature gates, used to enable or disable experimental features.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;udpPacketSize&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;int&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Maximum packet length supported when proxying UDP services, default is 1500. Server and client need to maintain consistent configuration.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;metadatas&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;map[string]string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Additional metadata that will be passed to server plugins to provide additional capabilities.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;includes&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;[]string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Specify additional configuration file directories where proxy and visitor configurations will be read and loaded.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;store&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;/frpdoc/en/docs/reference/client-configures/#storeconfig&#34;&gt;StoreConfig&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Store configuration for persisting proxy and visitor configurations. Supports runtime management via Web UI or API when webServer is enabled.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;storeconfig&#34;&gt;StoreConfig&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Field&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;path&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Store file path. When configured, enables the Store feature for runtime proxy and visitor management with persistence.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;clienttransportconfig&#34;&gt;ClientTransportConfig&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Field&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;protocol&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Communication protocol with frps. Options are tcp, kcp, quic, websocket, wss. Default is tcp.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;dialServerTimeout&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;int&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Timeout for connecting to the server, default is 10s.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;dialServerKeepalive&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;int&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Keepalive interval time for the underlying TCP connection with the server, in seconds.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;connectServerLocalIP&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Local IP bound when connecting to the server.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;proxyURL&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Proxy address used to connect to the server, format: {protocol}://user:passwd@192.168.1.128:8080. Protocol currently supports http, socks5, ntlm.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;poolCount&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;int&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Connection pool size.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;tcpMux&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;bool&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;TCP multiplexing, enabled by default.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;tcpMuxKeepaliveInterval&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;int&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Heartbeat check interval time for &lt;code&gt;tcpMux&lt;/code&gt;.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;quic&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;../common#quicoptions&#34;&gt;QUICOptions&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;QUIC protocol configuration parameters.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;heartbeatInterval&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;int&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Interval time for sending heartbeat packets to the server, default is 30s. It is recommended to enable &lt;code&gt;tcpMuxKeepaliveInterval&lt;/code&gt; and set this value to -1.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;heartbeatTimeout&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;int&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Timeout for heartbeat with the server, default is 90s.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;tls&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;/frpdoc/en/docs/reference/client-configures/#tlsclientconfig&#34;&gt;TLSClientConfig&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Client TLS protocol configuration.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;tlsclientconfig&#34;&gt;TLSClientConfig&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Field&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;enable&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;bool&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Whether to enable TLS connection with the server, enabled by default.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;disableCustomTLSFirstByte&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;bool&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;When TLS connection is enabled, do not send the 0x17 special byte. Default is true. When configured as true, it cannot be reused with vhostHTTPSPort port.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;../common#tlsconfig&#34;&gt;TLSConfig&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;TLS protocol configuration, embedded structure.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;authclientconfig&#34;&gt;AuthClientConfig&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Field&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;method&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Authentication method. Options are token or oidc, default is token.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;additionalScopes&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;[]string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Additional scope for authentication information. Options are HeartBeats and NewWorkConns&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;token&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Effective when method is token. Client needs to set the same value to pass authentication. Mutually exclusive with tokenSource field.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;tokenSource&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;../common#valuesource&#34;&gt;ValueSource&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Configuration for loading token from file. Mutually exclusive with token field.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;oidc&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;/frpdoc/en/docs/reference/client-configures/#authoidcclientconfig&#34;&gt;AuthOIDCClientConfig&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;OIDC authentication configuration.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;authoidcclientconfig&#34;&gt;AuthOIDCClientConfig&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Field&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;clientID&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;OIDC client ID.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;clientSecret&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;OIDC client secret.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;audience&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;OIDC audience parameter.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;scope&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;OIDC scope parameter.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;tokenEndpointURL&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;OIDC token endpoint URL.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;additionalEndpointParams&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;map[string]string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Additional endpoint parameters.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;trustedCaFile&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Trusted CA certificate file path for verifying OIDC server TLS certificate.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;insecureSkipVerify&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;bool&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Skip TLS certificate verification, not recommended for production use.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;proxyURL&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Proxy server URL to use when accessing OIDC token endpoint.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;tokenSource&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;../common#valuesource&#34;&gt;ValueSource&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Configuration for dynamically obtaining OIDC token from external source. When configured, other OIDC configuration fields will be ignored.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;virtualnetconfig&#34;&gt;VirtualNetConfig&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Field&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;address&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;IP address and network segment of the virtual network interface, format is CIDR (e.g. &amp;ldquo;100.86.0.1/24&amp;rdquo;).&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;</description>
    </item>
    <item>
      <title>Set BasicAuth Authentication</title>
      <link>/frpdoc/en/docs/features/http-https/auth/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/frpdoc/en/docs/features/http-https/auth/</guid>
      <description>&lt;p&gt;Since all clients share one frps HTTP service port, anyone who knows your domain name and URL can access your services deployed in the intranet. However, in some scenarios, you need to ensure that only limited users can access.&lt;/p&gt;&#xA;&lt;p&gt;frp supports protecting your web services through HTTP Basic Auth, requiring users to access your services through username and password.&lt;/p&gt;&#xA;&lt;p&gt;This feature is currently limited to HTTP type proxies and requires adding username and password settings in frpc&amp;rsquo;s proxy configuration.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Custom Subdomain</title>
      <link>/frpdoc/en/docs/features/http-https/subdomain/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/frpdoc/en/docs/features/http-https/subdomain/</guid>
      <description>&lt;p&gt;When multiple people are using one frps simultaneously, using custom subdomains is more convenient.&lt;/p&gt;&#xA;&lt;p&gt;By configuring &lt;code&gt;subdomainHost&lt;/code&gt; in frps&amp;rsquo;s configuration file, you can enable this feature. After that, in frpc&amp;rsquo;s http and https type proxies, you can configure a &lt;code&gt;subdomain&lt;/code&gt; parameter instead of configuring &lt;code&gt;customDomains&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;You only need to resolve &lt;code&gt;*.{subdomainHost}&lt;/code&gt; to the server where frps is located. After that, users can specify their own subdomain for their web services through subdomain, and access their web services through &lt;code&gt;{subdomain}.{subdomainHost}&lt;/code&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Proxy Configuration</title>
      <link>/frpdoc/en/docs/reference/proxy/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/frpdoc/en/docs/reference/proxy/</guid>
      <description>&lt;h3 id=&#34;proxybaseconfig&#34;&gt;ProxyBaseConfig&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Field&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;name&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Proxy name.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;type&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Proxy type. Options are tcp, udp, http, https, tcpmux, stcp, sudp, xtcp.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;enabled&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;*bool&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Whether this proxy is enabled, default is true. Set to false to disable this proxy, allowing individual control over each proxy&amp;rsquo;s enabled state.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;annotations&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;map[string]string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Proxy annotation information that will be displayed in the server&amp;rsquo;s dashboard.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;transport&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;/frpdoc/en/docs/reference/proxy/#proxytransport&#34;&gt;ProxyTransport&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Proxy network layer configuration.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;metadatas&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;map[string]string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Additional metadata that will be passed to server plugins to provide additional capabilities.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;loadBalancer&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;/frpdoc/en/docs/reference/proxy/#loadbalancerconfig&#34;&gt;LoadBalancerConfig&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Load balancing configuration.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;healthCheck&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;/frpdoc/en/docs/reference/proxy/#healthcheckconfig&#34;&gt;HealthCheckConfig&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Health check configuration.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;/frpdoc/en/docs/reference/proxy/#proxybackend&#34;&gt;ProxyBackend&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Proxy backend service configuration.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;proxytransport&#34;&gt;ProxyTransport&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Field&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;useEncryption&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;bool&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Whether to enable encryption functionality. When enabled, communication content between this proxy and the server will be encrypted. If frpc has enabled global TLS, this parameter is not needed.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;useCompression&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;bool&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Whether to enable compression functionality. When enabled, communication content between this proxy and the server will be compressed.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;bandwidthLimit&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Set bandwidth rate limiting for a single proxy, in MB or KB units. 0 means no limit. If enabled, it will apply to the corresponding frpc by default.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;bandwidthLimitMode&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Rate limiting type, client-side or server-side rate limiting. Options are client and server, default is client-side rate limiting.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;proxyProtocolVersion&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Version of proxy protocol to enable. Options are v1 and v2. If enabled, frpc will send proxy protocol after establishing connection with local service, containing original request IP address and port information.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;proxybackend&#34;&gt;ProxyBackend&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Field&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;localIP&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;IP of the local service being proxied, default is 127.0.0.1.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;localPort&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;int&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Port of the local service being proxied.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;plugin&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;../client-plugin&#34;&gt;ClientPluginOptions&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Client plugin configuration. If client plugin is enabled, localIP and localPort don&amp;rsquo;t need to be configured, and traffic will be handled by the client plugin. Different plugin types correspond to different configurations, such as &lt;a href=&#34;../client-plugin#httpproxypluginoptions&#34;&gt;HTTPProxyPluginOptions&lt;/a&gt;.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;loadbalancerconfig&#34;&gt;LoadBalancerConfig&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Field&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;group&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Load balancing group name. User requests will be sent to proxies in the same group using round-robin.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;groupKey&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Load balancing group key for authenticating the load balancing group. Only proxies with the same groupKey will be added to the same group.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;healthcheckconfig&#34;&gt;HealthCheckConfig&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Field&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;type&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Health check type. Options are tcp and http. After configuration, health check is enabled. tcp considers service healthy if connection succeeds, http requires interface to return 2xx status codes to consider service healthy.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;timeoutSeconds&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;int&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Health check timeout (seconds), default is 3s.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;maxFailed&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;int&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Consecutive health check error count. How many consecutive check errors to consider service unhealthy, default is 1.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;intervalSeconds&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;int&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Health check interval (seconds). How often to perform health checks, default is 10s.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;path&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Health check HTTP interface. If health check type is http, this parameter needs to be configured to specify the path for sending http requests, such as &lt;code&gt;/health&lt;/code&gt;.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;httpHeaders&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;../common#httpheader&#34;&gt;[]HTTPHeader&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Health check HTTP request headers, only effective when health check type is http.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;domainconfig&#34;&gt;DomainConfig&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Field&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;customDomains&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;[]string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Custom domain list.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;subdomain&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Subdomain.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;tcpproxyconfig&#34;&gt;TCPProxyConfig&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Field&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;/frpdoc/en/docs/reference/proxy/#proxybaseconfig&#34;&gt;ProxyBaseConfig&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Base configuration.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;remotePort&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;int&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Port bound by the server. Traffic accessing this port on the server will be forwarded to the corresponding local service.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;udpproxyconfig&#34;&gt;UDPProxyConfig&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Field&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;/frpdoc/en/docs/reference/proxy/#proxybaseconfig&#34;&gt;ProxyBaseConfig&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Base configuration.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;remotePort&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;int&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Port bound by the server. Traffic accessing this port on the server will be forwarded to the corresponding local service.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;httpproxyconfig&#34;&gt;HTTPProxyConfig&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Field&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;/frpdoc/en/docs/reference/proxy/#proxybaseconfig&#34;&gt;ProxyBaseConfig&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Base configuration.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;/frpdoc/en/docs/reference/proxy/#domainconfig&#34;&gt;DomainConfig&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Domain configuration.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;locations&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;[]string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;URL routing configuration.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;httpUser&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;HTTP Basic Auth username.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;httpPassword&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;HTTP Basic Auth password.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;hostHeaderRewrite&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Replace Host Header.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;requestHeaders&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;../common#headeroperations&#34;&gt;HeaderOperations&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Request Header operation configuration.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;responseHeaders&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;../common#headeroperations&#34;&gt;HeaderOperations&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Response Header operation configuration.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;routeByHTTPUser&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Route by HTTP Basic Auth user.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;httpsproxyconfig&#34;&gt;HTTPSProxyConfig&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Field&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;/frpdoc/en/docs/reference/proxy/#proxybaseconfig&#34;&gt;ProxyBaseConfig&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Base configuration.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;/frpdoc/en/docs/reference/proxy/#domainconfig&#34;&gt;DomainConfig&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Domain configuration.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;tcpmuxproxyconfig&#34;&gt;TCPMuxProxyConfig&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Field&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;/frpdoc/en/docs/reference/proxy/#proxybaseconfig&#34;&gt;ProxyBaseConfig&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Base configuration.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;/frpdoc/en/docs/reference/proxy/#domainconfig&#34;&gt;DomainConfig&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Domain configuration.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;httpUser&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Username. If this parameter is configured, correct identity information needs to be attached via Proxy-Authorization when establishing connection through HTTP CONNECT.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;httpPassword&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Password.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;routeByHTTPUser&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Route by HTTP Basic Auth user.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;multiplexer&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Multiplexer type, currently only supports httpconnect.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;stcpproxyconfig&#34;&gt;STCPProxyConfig&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Field&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;/frpdoc/en/docs/reference/proxy/#proxybaseconfig&#34;&gt;ProxyBaseConfig&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Base configuration.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;secretKey&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Secret key. The secret key between server and access side must be consistent for the access side to access the server.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;allowUsers&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;[]string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;List of visitor users allowed to access. By default, only visitors under the same user are allowed to access. Configure as * to allow any visitor to access.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;xtcpproxyconfig&#34;&gt;XTCPProxyConfig&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Field&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;/frpdoc/en/docs/reference/proxy/#proxybaseconfig&#34;&gt;ProxyBaseConfig&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Base configuration.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;secretKey&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Secret key. The secret key between server and access side must be consistent for the access side to access the server.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;allowUsers&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;[]string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;List of visitor users allowed to access. By default, only visitors under the same user are allowed to access. Configure as * to allow any visitor to access.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;natTraversal&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;../common#nattraversalconfig&#34;&gt;NatTraversalConfig&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;NAT traversal configuration.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;sudpproxyconfig&#34;&gt;SUDPProxyConfig&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Field&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;/frpdoc/en/docs/reference/proxy/#proxybaseconfig&#34;&gt;ProxyBaseConfig&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Base configuration.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;secretKey&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Secret key. The secret key between server and access side must be consistent for the access side to access the server.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;allowUsers&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;[]string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;List of visitor users allowed to access. By default, only visitors under the same user are allowed to access. Configure as * to allow any visitor to access.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;</description>
    </item>
    <item>
      <title>Access Intranet Machines via SSH</title>
      <link>/frpdoc/en/docs/examples/ssh/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/frpdoc/en/docs/examples/ssh/</guid>
      <description>&lt;h3 id=&#34;steps&#34;&gt;Steps&lt;/h3&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Deploy frps on a machine with public IP&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Deploy frps and edit the frps.toml file. Here is a simplified configuration where we set the port for the frp server to receive client connections:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-toml&#34; data-lang=&#34;toml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;bindPort&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;7000&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Deploy frpc on the intranet machine that needs to be accessed&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Deploy frpc and edit the frpc.toml file. Assume the public IP address of the server where frps is located is x.x.x.x. Here is an example configuration:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Routing</title>
      <link>/frpdoc/en/docs/features/http-https/route/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/frpdoc/en/docs/features/http-https/route/</guid>
      <description>&lt;h2 id=&#34;url-routing&#34;&gt;URL Routing&lt;/h2&gt;&#xA;&lt;p&gt;frp supports routing and forwarding to different backend services based on the URL path of the request.&lt;/p&gt;&#xA;&lt;p&gt;Specify one or more URL prefixes that a proxy can match through the locations field in the configuration file (currently only supports maximum prefix matching, regex matching will be considered later). For example, specifying &lt;code&gt;locations = &amp;quot;/news&amp;quot;&lt;/code&gt; means all requests with URLs starting with &lt;code&gt;/news&lt;/code&gt; will be forwarded to this service.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Visitor Configuration</title>
      <link>/frpdoc/en/docs/reference/visitor/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/frpdoc/en/docs/reference/visitor/</guid>
      <description>&lt;h3 id=&#34;visitorbaseconfig&#34;&gt;VisitorBaseConfig&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Field&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;name&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Visitor name.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;type&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Visitor type. Options are stcp, sudp, xtcp.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;enabled&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;*bool&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Whether this visitor is enabled, default is true. Set to false to disable this visitor, allowing individual control over each visitor&amp;rsquo;s enabled state.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;transport&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;/frpdoc/en/docs/reference/visitor/#visitortransport&#34;&gt;VisitorTransport&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Visitor network layer configuration.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;secretKey&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Secret key. The secret key between server and access side must be consistent for the access side to access the server.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;serverUser&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Username that the proxy to be accessed belongs to. If empty, defaults to current user.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;serverName&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Name of the proxy to be accessed.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;bindAddr&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Local address that visitor listens on. By accessing the listened address and port, connect to the remote proxy service.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;bindPort&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;int&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Local port that visitor listens on. If set to -1, means no need to listen on physical port, usually can be used as fallback for other visitors.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;plugin&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;../visitor-plugin&#34;&gt;VisitorPluginOptions&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Visitor plugin configuration for extending visitor functionality. Different plugin types correspond to different configurations.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;visitortransport&#34;&gt;VisitorTransport&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Field&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;useEncryption&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;bool&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Whether to enable encryption functionality. When enabled, communication content between this proxy and the server will be encrypted. If frpc has enabled global TLS, this parameter is not needed.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;useCompression&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;bool&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Whether to enable compression functionality. When enabled, communication content between this proxy and the server will be compressed.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;stcpvisitorconfig&#34;&gt;STCPVisitorConfig&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Field&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;/frpdoc/en/docs/reference/visitor/#visitorbaseconfig&#34;&gt;VisitorBaseConfig&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Base configuration.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;sudpvisitorconfig&#34;&gt;SUDPVisitorConfig&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Field&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;/frpdoc/en/docs/reference/visitor/#visitorbaseconfig&#34;&gt;VisitorBaseConfig&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Base configuration.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;xtcpvisitorconfig&#34;&gt;XTCPVisitorConfig&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Field&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;/frpdoc/en/docs/reference/visitor/#visitorbaseconfig&#34;&gt;VisitorBaseConfig&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Base configuration.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;protocol&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Tunnel underlying communication protocol. Options are quic and kcp, default is quic.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;keepTunnelOpen&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;bool&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Whether to keep tunnel open. If enabled, will periodically check tunnel status and try to keep it open.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;maxRetriesAnHour&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;int&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Number of attempts to open tunnel per hour, default value is 8.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;minRetryInterval&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;int&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Minimum interval time for retrying to open tunnel, in seconds, default is 90s.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;fallbackTo&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Name of other visitor to fallback to.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;fallbackTimeoutMs&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;int&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Fallback to other visitor after connection establishment exceeds this time (ms).&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;natTraversal&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;../common#nattraversalconfig&#34;&gt;NatTraversalConfig&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;NAT traversal configuration.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;</description>
    </item>
    <item>
      <title>Client Plugin Configuration</title>
      <link>/frpdoc/en/docs/reference/client-plugin/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/frpdoc/en/docs/reference/client-plugin/</guid>
      <description>&lt;h3 id=&#34;httpproxypluginoptions&#34;&gt;HTTPProxyPluginOptions&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Field&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;type&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Plugin type, set to &amp;ldquo;http_proxy&amp;rdquo;.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;httpUser&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;HTTP proxy username.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;httpPassword&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;HTTP proxy password.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;socks5pluginoptions&#34;&gt;Socks5PluginOptions&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Field&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;type&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Plugin type, set to &amp;ldquo;socks5&amp;rdquo;.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;username&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Username.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;password&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Password.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;staticfilepluginoptions&#34;&gt;StaticFilePluginOptions&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Field&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;type&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Plugin type, set to &amp;ldquo;static_file&amp;rdquo;.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;localPath&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Local path where static files are located.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;stripPrefix&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Remove specific prefix from user HTTP request Path.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;httpUser&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;HTTP Basic Auth username.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;httpPassword&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;HTTP Basic Auth password.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;unixdomainsocketpluginoptions&#34;&gt;UnixDomainSocketPluginOptions&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Field&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;type&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Plugin type, set to &amp;ldquo;unix_domain_socket&amp;rdquo;.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;unixPath&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;UNIX domain socket address.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;http2httpspluginoptions&#34;&gt;HTTP2HTTPSPluginOptions&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Field&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;type&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Plugin type, set to &amp;ldquo;http2https&amp;rdquo;.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;localAddr&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Local HTTPS service address.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;hostHeaderRewrite&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Replace Host header.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;requestHeaders&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;../common#headeroperations&#34;&gt;HeaderOperations&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Request Header operation configuration.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;https2httppluginoptions&#34;&gt;HTTPS2HTTPPluginOptions&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Field&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;type&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Plugin type, set to &amp;ldquo;https2http&amp;rdquo;.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;localAddr&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Local HTTPS service address.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;hostHeaderRewrite&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Replace Host header.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;requestHeaders&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;../common#headeroperations&#34;&gt;HeaderOperations&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Request Header operation configuration.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;enableHTTP2&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;bool&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Whether to enable HTTP/2, enabled by default.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;crtPath&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;TLS certificate file path.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;keyPath&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;TLS key file path.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;https2httpspluginoptions&#34;&gt;HTTPS2HTTPSPluginOptions&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Field&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;type&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Plugin type, set to &amp;ldquo;https2https&amp;rdquo;.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;localAddr&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Local HTTPS service address.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;hostHeaderRewrite&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Replace Host header.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;requestHeaders&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;../common#headeroperations&#34;&gt;HeaderOperations&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Request Header operation configuration.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;enableHTTP2&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;bool&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Whether to enable HTTP/2, enabled by default.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;crtPath&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;TLS certificate file path.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;keyPath&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;TLS key file path.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;tls2rawpluginoptions&#34;&gt;TLS2RawPluginOptions&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Field&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;type&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Plugin type, set to &amp;ldquo;tls2raw&amp;rdquo;.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;localAddr&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Local service address.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;crtPath&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;TLS certificate file path.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;keyPath&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;TLS key file path.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;virtualnetpluginoptions&#34;&gt;VirtualNetPluginOptions&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Field&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;type&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Plugin type, set to &amp;ldquo;virtual_net&amp;rdquo;.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;</description>
    </item>
    <item>
      <title>Visitor Plugin Configuration</title>
      <link>/frpdoc/en/docs/reference/visitor-plugin/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/frpdoc/en/docs/reference/visitor-plugin/</guid>
      <description>&lt;h3 id=&#34;virtualnetvisitorpluginoptions&#34;&gt;VirtualNetVisitorPluginOptions&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Field&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;type&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Plugin type, set to &amp;ldquo;virtual_net&amp;rdquo;.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;destinationIP&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Target virtual IP address to access. Usually the server&amp;rsquo;s virtual network address.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;</description>
    </item>
    <item>
      <title>Configuration File</title>
      <link>/frpdoc/en/docs/features/common/configure/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/frpdoc/en/docs/features/common/configure/</guid>
      <description>&lt;p&gt;Starting from v0.52.0, frp began supporting TOML, YAML, and JSON as configuration file formats.&lt;/p&gt;&#xA;&lt;p&gt;Please note that INI has been deprecated and will be removed in future releases. New features can only be used in TOML, YAML, or JSON. Users who wish to use these new features should switch their configuration format accordingly.&lt;/p&gt;&#xA;&lt;h2 id=&#34;format&#34;&gt;Format&lt;/h2&gt;&#xA;&lt;p&gt;You can use any format you like among TOML/YAML/JSON to write configuration files, and frp will automatically adapt and parse them.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Multiple SSH Services Sharing the Same Port</title>
      <link>/frpdoc/en/docs/examples/multiple-ssh-over-same-port/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/frpdoc/en/docs/examples/multiple-ssh-over-same-port/</guid>
      <description>&lt;h3 id=&#34;steps&#34;&gt;Steps&lt;/h3&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Deploy frps on a machine with public IP&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Modify the frps.toml file to include the following content (using the most simplified configuration here):&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-toml&#34; data-lang=&#34;toml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;bindPort&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;7000&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;tcpmuxHTTPConnectPort&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5002&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Deploy frpc on intranet machine A&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Create an frpc configuration file, for example frpc.toml, and add the following content to the configuration file:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-toml&#34; data-lang=&#34;toml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;serverAddr&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;x.x.x.x&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;serverPort&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;7000&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;proxies&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;name&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;ssh1&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;type&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;tcpmux&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;multiplexer&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;httpconnect&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;customDomains&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;machine-a.example.com&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;localIP&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;127.0.0.1&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;localPort&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;22&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Deploy another frpc on intranet machine B&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Create an frpc configuration file, for example frpc.toml, and add the following content to the configuration file:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Access Intranet Web Services via Custom Domain Names</title>
      <link>/frpdoc/en/docs/examples/vhost-http/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/frpdoc/en/docs/examples/vhost-http/</guid>
      <description>&lt;p&gt;HTTP type proxies are very suitable for providing intranet web services to external users through custom domain names. Compared to TCP type proxies, HTTP proxies can not only reuse ports but also provide many features based on the HTTP protocol.&lt;/p&gt;&#xA;&lt;p&gt;HTTPS is similar to this, but it should be noted that frp&amp;rsquo;s HTTPS proxy requires the local service to be an HTTPS service, and frps will not perform TLS termination. You can also combine the https2http plugin to expose local HTTP services through the HTTPS protocol.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Forward DNS Query Requests</title>
      <link>/frpdoc/en/docs/examples/dns/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/frpdoc/en/docs/examples/dns/</guid>
      <description>&lt;p&gt;DNS query requests typically use the UDP protocol, and frp supports penetration of intranet UDP services, with configuration similar to TCP.&lt;/p&gt;&#xA;&lt;h3 id=&#34;steps&#34;&gt;Steps&lt;/h3&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Configure frps.toml&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Add the following content to the frps.toml file:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-toml&#34; data-lang=&#34;toml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;bindPort&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;7000&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Configure frpc.toml&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Add the following content to the frpc.toml file:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-toml&#34; data-lang=&#34;toml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;serverAddr&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;x.x.x.x&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;serverPort&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;7000&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;proxies&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;name&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;dns&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;type&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;udp&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;localIP&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;8.8.8.8&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;localPort&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;53&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;remotePort&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;6000&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Please note that this example reverse-proxies Google&amp;rsquo;s DNS query server address, which is only for testing UDP proxy and has no practical significance.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Monitoring</title>
      <link>/frpdoc/en/docs/features/common/monitor/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/frpdoc/en/docs/features/common/monitor/</guid>
      <description>&lt;p&gt;Currently, frps server supports two monitoring systems: memory monitoring and Prometheus monitoring.&lt;/p&gt;&#xA;&lt;h2 id=&#34;memory-monitoring&#34;&gt;Memory Monitoring&lt;/h2&gt;&#xA;&lt;p&gt;Monitoring data stored in memory is primarily used for Dashboard display. When the Dashboard feature is enabled in frps configuration, memory monitoring is enabled by default.&lt;/p&gt;&#xA;&lt;p&gt;Please note that monitoring data in memory will be cleared after each process restart, or retained for 7 days. Monitoring data can be obtained by sending HTTP requests to the Dashboard address, but this API is not currently standardized and direct use is not recommended.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Forward Unix Domain Socket</title>
      <link>/frpdoc/en/docs/examples/unix-domain-socket/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/frpdoc/en/docs/examples/unix-domain-socket/</guid>
      <description>&lt;h3 id=&#34;steps&#34;&gt;Steps&lt;/h3&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Configure frps.toml&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Add the following content to the frps.toml file:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-toml&#34; data-lang=&#34;toml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;bindPort&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;7000&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Configure frpc.toml&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Add the following content to the frpc.toml file, ensuring the correct Unix domain socket path is set:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-toml&#34; data-lang=&#34;toml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;serverAddr&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;x.x.x.x&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;serverPort&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;7000&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;proxies&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;name&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;unix_domain_socket&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;type&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;tcp&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;remotePort&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;6000&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;proxies&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;plugin&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;type&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;unix_domain_socket&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Unix domain socket path&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;unixPath&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;/var/run/docker.sock&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Start frps and frpc&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Use curl to view Docker version information&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl http://x.x.x.x:6000/version&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;</description>
    </item>
    <item>
      <title>Authentication</title>
      <link>/frpdoc/en/docs/features/common/authentication/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/frpdoc/en/docs/features/common/authentication/</guid>
      <description>&lt;p&gt;Currently, frpc and frps support two authentication methods: &lt;code&gt;token&lt;/code&gt; and &lt;code&gt;oidc&lt;/code&gt;, with &lt;code&gt;token&lt;/code&gt; being the default. These authentication methods allow you to verify communication between the client and server, ensuring that only authorized users can establish connections.&lt;/p&gt;&#xA;&lt;h2 id=&#34;token&#34;&gt;Token&lt;/h2&gt;&#xA;&lt;p&gt;Token authentication is a simple authentication method that only requires configuring the same token in both the frp client (frpc) and server (frps) configuration files.&lt;/p&gt;&#xA;&lt;h3 id=&#34;configuration-example&#34;&gt;Configuration Example&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-toml&#34; data-lang=&#34;toml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# frps.toml&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;bindPort&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;7000&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;auth&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;token&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;abc&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-toml&#34; data-lang=&#34;toml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# frpc.toml&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;auth&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;token&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;abc&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;loading-token-from-file&#34;&gt;Loading Token from File&lt;/h3&gt;&#xA;&lt;p&gt;&lt;em&gt;Added in v0.64.0&lt;/em&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Provide Simple File Access Service</title>
      <link>/frpdoc/en/docs/examples/static-file/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/frpdoc/en/docs/examples/static-file/</guid>
      <description>&lt;p&gt;By using the &lt;code&gt;static_file&lt;/code&gt; plugin, you can easily provide an HTTP-based file access service that allows others to access your specified files.&lt;/p&gt;&#xA;&lt;h3 id=&#34;steps&#34;&gt;Steps&lt;/h3&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Configure frps.toml&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Add the following content to the frps.toml file:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-toml&#34; data-lang=&#34;toml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;bindPort&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;7000&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Configure frpc.toml&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Add the following content to the frpc.toml file, ensuring appropriate file paths, username, and password are set:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-toml&#34; data-lang=&#34;toml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;serverAddr&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;x.x.x.x&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;serverPort&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;7000&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;proxies&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;name&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;test_static_file&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;type&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;tcp&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;remotePort&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;6000&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;proxies&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;plugin&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;type&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;static_file&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Local file directory to provide external access&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;localPath&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;/tmp/file&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Prefix in URL that will be removed, remaining content is the file path to access&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;stripPrefix&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;static&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;httpUser&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;abc&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;httpPassword&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;abc&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Please modify &lt;code&gt;localPath&lt;/code&gt;, &lt;code&gt;stripPrefix&lt;/code&gt;, &lt;code&gt;httpUser&lt;/code&gt;, and &lt;code&gt;httpPassword&lt;/code&gt; according to your actual situation.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Enable HTTPS for Local HTTP Service</title>
      <link>/frpdoc/en/docs/examples/https2http/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/frpdoc/en/docs/examples/https2http/</guid>
      <description>&lt;h3 id=&#34;steps&#34;&gt;Steps&lt;/h3&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Configure frps.toml&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-toml&#34; data-lang=&#34;toml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;bindPort&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;7000&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;vhostHTTPSPort&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;443&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Configure frpc.toml&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-toml&#34; data-lang=&#34;toml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;serverAddr&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;x.x.x.x&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;serverPort&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;7000&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;proxies&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;name&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;test_htts2http&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;type&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;https&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;customDomains&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;test.yourdomain.com&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;proxies&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;plugin&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;type&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;https2http&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;localAddr&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;127.0.0.1:80&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# HTTPS certificate related configuration&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;crtPath&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;./server.crt&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;keyPath&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;./server.key&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;hostHeaderRewrite&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;127.0.0.1&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;requestHeaders&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;set&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;x-from-where&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;frp&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Please note that you need to modify the above configuration according to your domain name and certificate path.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Start frps and frpc&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Access HTTPS Service&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Open your web browser and visit &lt;code&gt;https://test.yourdomain.com&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;By following the above steps, you will be able to enable HTTPS for local HTTP services to achieve secure external access.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Securely Expose Intranet Services</title>
      <link>/frpdoc/en/docs/examples/stcp/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/frpdoc/en/docs/examples/stcp/</guid>
      <description>&lt;p&gt;Some intranet services may pose security risks if directly exposed on the public network. Using &lt;code&gt;stcp (secret tcp)&lt;/code&gt; type proxies allows you to securely expose intranet services to authorized users, which requires visitors to also deploy frpc clients.&lt;/p&gt;&#xA;&lt;h3 id=&#34;steps&#34;&gt;Steps&lt;/h3&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Configure frps.toml&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Add the following content to the frps.toml file:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-toml&#34; data-lang=&#34;toml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;bindPort&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;7000&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Deploy frpc client and configure&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Deploy frpc on the machine that needs to expose intranet services to the public network, and create the following configuration:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Web Interface</title>
      <link>/frpdoc/en/docs/features/common/ui/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/frpdoc/en/docs/features/common/ui/</guid>
      <description>&lt;p&gt;Currently, frpc and frps have built-in corresponding web interfaces for user convenience.&lt;/p&gt;&#xA;&lt;h2 id=&#34;server-dashboard&#34;&gt;Server Dashboard&lt;/h2&gt;&#xA;&lt;p&gt;The server Dashboard allows users to view frp status and proxy statistics through a browser.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Note: Dashboard has not been optimized for displaying large amounts of proxy data. If you experience slow Dashboard access, please do not enable this feature.&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;You need to specify the port used by the dashboard service in frps.toml to enable this feature:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Point-to-Point Intranet Penetration</title>
      <link>/frpdoc/en/docs/examples/xtcp/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/frpdoc/en/docs/examples/xtcp/</guid>
      <description>&lt;p&gt;frp provides a new proxy type &lt;code&gt;xtcp&lt;/code&gt; for intranet penetration when you need to transfer large amounts of data and don&amp;rsquo;t want traffic to go through the server.&lt;/p&gt;&#xA;&lt;p&gt;Similar to &lt;code&gt;stcp&lt;/code&gt;, using &lt;code&gt;xtcp&lt;/code&gt; requires deploying frpc on both ends to establish a direct connection.&lt;/p&gt;&#xA;&lt;p&gt;Note that &lt;code&gt;xtcp&lt;/code&gt; is not suitable for all types of NAT devices. If penetration fails, you can try using &lt;code&gt;stcp&lt;/code&gt; proxy.&lt;/p&gt;&#xA;&lt;h3 id=&#34;steps&#34;&gt;Steps&lt;/h3&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Configure frpc.toml file on the machine that needs to be exposed to the external network&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Virtual Network (VirtualNet)</title>
      <link>/frpdoc/en/docs/examples/virtualnet/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/frpdoc/en/docs/examples/virtualnet/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: VirtualNet is an Alpha-stage feature that is currently unstable. Its configuration methods and functionality may change at any time in future versions. Please do not use this feature in production environments; it is only recommended for testing and evaluation purposes.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;h3 id=&#34;overview&#34;&gt;Overview&lt;/h3&gt;&#xA;&lt;p&gt;Virtual Network (VirtualNet) functionality is an Alpha feature introduced in frp v0.62.0, which allows frp to create and manage virtual network connections between clients and visitors through TUN interfaces, enabling complete network connectivity between devices.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Load Balancing and Health Check</title>
      <link>/frpdoc/en/docs/features/common/load-balancer/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/frpdoc/en/docs/features/common/load-balancer/</guid>
      <description>&lt;h2 id=&#34;load-balancing&#34;&gt;Load Balancing&lt;/h2&gt;&#xA;&lt;p&gt;You can add multiple proxies of the same type to the same &lt;code&gt;group&lt;/code&gt; to implement load balancing capabilities.&lt;/p&gt;&#xA;&lt;p&gt;Currently supported proxy types include: &lt;code&gt;tcp&lt;/code&gt;, &lt;code&gt;http&lt;/code&gt;, &lt;code&gt;https&lt;/code&gt;, &lt;code&gt;tcpmux&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-toml&#34; data-lang=&#34;toml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# frpc.toml&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;proxies&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;name&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;test1&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;type&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;tcp&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;localPort&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;8080&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;remotePort&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;80&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;loadBalancer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;group&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;web&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;loadBalancer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;groupKey&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;123&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;proxies&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;name&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;test2&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;type&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;tcp&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;localPort&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;8081&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;remotePort&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;80&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;loadBalancer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;group&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;web&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;loadBalancer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;groupKey&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;123&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;When users connect to port 80 of the frps server, frps will randomly distribute received user connections to one of the surviving proxies. This ensures that even if one frpc machine fails, other nodes can still provide services.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Get Real User IP</title>
      <link>/frpdoc/en/docs/features/common/realip/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/frpdoc/en/docs/features/common/realip/</guid>
      <description>&lt;h2 id=&#34;http-x-forwarded-for&#34;&gt;HTTP X-Forwarded-For&lt;/h2&gt;&#xA;&lt;p&gt;Currently, only &lt;code&gt;http&lt;/code&gt; type proxies or proxies with &lt;code&gt;https2http&lt;/code&gt; or &lt;code&gt;https2https&lt;/code&gt; plugins enabled support this feature.&lt;/p&gt;&#xA;&lt;p&gt;You can get the real user IP through the &lt;code&gt;X-Forwarded-For&lt;/code&gt; in HTTP request headers, which is enabled by default.&lt;/p&gt;&#xA;&lt;h2 id=&#34;proxy-protocol&#34;&gt;Proxy Protocol&lt;/h2&gt;&#xA;&lt;p&gt;frp supports passing the real IP of requests proxied through frp via the &lt;code&gt;Proxy Protocol&lt;/code&gt; protocol.&lt;/p&gt;&#xA;&lt;p&gt;After the &lt;code&gt;Proxy Protocol&lt;/code&gt; feature is enabled, frpc will first send a section of &lt;code&gt;Proxy Protocol&lt;/code&gt; protocol content to the local service after establishing a connection with the local service. The local service can obtain the real IP of the accessing user by parsing this content. So not only HTTP services, but any TCP service that supports this protocol can obtain the user&amp;rsquo;s real IP address.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Port Range Mapping</title>
      <link>/frpdoc/en/docs/features/common/range/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/frpdoc/en/docs/features/common/range/</guid>
      <description>&lt;p&gt;&lt;em&gt;Added in v0.56.0&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;We can use Go template&amp;rsquo;s range syntax combined with the built-in &lt;code&gt;parseNumberRangePair&lt;/code&gt; function to implement port range mapping.&lt;/p&gt;&#xA;&lt;p&gt;In the example below, after the application runs, 8 proxies will be created, named &lt;code&gt;test-6000, test-6001 ... test-6007&lt;/code&gt;, which will map remote ports to local ports respectively.&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;{{- range $_, $v := parseNumberRangePair &amp;#34;6000-6006,6007&amp;#34; &amp;#34;6000-6006,6007&amp;#34; }}&#xD;&#xA;[[proxies]]&#xD;&#xA;name = &amp;#34;tcp-{{ $v.First }}&amp;#34;&#xD;&#xA;type = &amp;#34;tcp&amp;#34;&#xD;&#xA;localPort = {{ $v.First }}&#xD;&#xA;remotePort = {{ $v.Second }}&#xD;&#xA;{{- end }}&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Client</title>
      <link>/frpdoc/en/docs/features/common/client/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/frpdoc/en/docs/features/common/client/</guid>
      <description>&lt;h2 id=&#34;dynamic-configuration-updates&#34;&gt;Dynamic Configuration Updates&lt;/h2&gt;&#xA;&lt;p&gt;When you need to modify frpc proxy configuration, you can use the &lt;code&gt;frpc reload&lt;/code&gt; command to achieve dynamic configuration file loading, usually completing proxy updates within seconds.&lt;/p&gt;&#xA;&lt;p&gt;To enable this feature, you need to enable webServer in frpc to provide API services. The configuration is as follows:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-toml&#34; data-lang=&#34;toml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;webServer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;addr&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;127.0.0.1&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;webServer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;port&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;7400&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Then execute the following command to reload the configuration:&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;frpc reload -c ./frpc.toml&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;After waiting for a period of time, the client will create, update, or delete proxies according to the new configuration file. Note that parameters in the non-proxy related common section cannot currently be modified except for start.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Server Management</title>
      <link>/frpdoc/en/docs/features/common/server-manage/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/frpdoc/en/docs/features/common/server-manage/</guid>
      <description>&lt;h2 id=&#34;port-whitelist&#34;&gt;Port Whitelist&lt;/h2&gt;&#xA;&lt;p&gt;To prevent port abuse, you can manually specify which ports are allowed to be used. In the server configuration, specify through &lt;code&gt;allowPorts&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-toml&#34; data-lang=&#34;toml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# frps.ini&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;allowPorts&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;start&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2000&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;end&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3000&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;single&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3001&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;single&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3003&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;start&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4000&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;end&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;50000&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;allowPorts&lt;/code&gt; can configure a specific port or all ports within a range to be allowed.&lt;/p&gt;&#xA;&lt;h2 id=&#34;port-reuse&#34;&gt;Port Reuse&lt;/h2&gt;&#xA;&lt;p&gt;Currently, &lt;code&gt;vhostHTTPPort&lt;/code&gt; and &lt;code&gt;vhostHTTPSPort&lt;/code&gt; in frps support being configured as the same port as &lt;code&gt;bindPort&lt;/code&gt;. frps will analyze the connection protocol and then handle it differently.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Client Plugin</title>
      <link>/frpdoc/en/docs/features/common/client-plugin/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/frpdoc/en/docs/features/common/client-plugin/</guid>
      <description>&lt;p&gt;By default, frpc will only forward requests to local TCP or UDP ports, i.e., the local service address specified by &lt;code&gt;localIP&lt;/code&gt; and &lt;code&gt;localPort&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;By enabling client plugin functionality, you can build in some simple local services when only starting frpc, thereby achieving functionality that would normally require starting additional services.&lt;/p&gt;&#xA;&lt;p&gt;In each proxy&amp;rsquo;s configuration, you can configure the plugin to use and related parameters through &lt;code&gt;plugin&lt;/code&gt;. After enabling client plugins, you no longer need to configure &lt;code&gt;localIP&lt;/code&gt; and &lt;code&gt;localPort&lt;/code&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Server Plugin</title>
      <link>/frpdoc/en/docs/features/common/server-plugin/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/frpdoc/en/docs/features/common/server-plugin/</guid>
      <description>&lt;p&gt;The purpose of frp server plugins is to extend the capabilities of the frp server without intruding on its own code.&lt;/p&gt;&#xA;&lt;p&gt;frp server plugins run as separate processes and listen on a port, providing RPC interfaces externally to respond to frps requests.&lt;/p&gt;&#xA;&lt;p&gt;Before executing certain operations, frps will send RPC requests to server plugins according to configuration, and execute corresponding operations based on the plugin&amp;rsquo;s response.&lt;/p&gt;&#xA;&lt;h2 id=&#34;rpc-requests&#34;&gt;RPC Requests&lt;/h2&gt;&#xA;&lt;p&gt;After receiving operation requests, server plugins can give three types of responses:&lt;/p&gt;</description>
    </item>
    <item>
      <title>SSH Tunnel Gateway</title>
      <link>/frpdoc/en/docs/features/common/ssh/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/frpdoc/en/docs/features/common/ssh/</guid>
      <description>&lt;p&gt;&lt;em&gt;Added in v0.53.0&lt;/em&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;concept&#34;&gt;Concept&lt;/h2&gt;&#xA;&lt;p&gt;SSH supports reverse proxy capability &lt;a href=&#34;https://www.rfc-editor.org/rfc/rfc4254#page-16&#34;&gt;rfc&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;frp supports listening on an SSH port on the frps side, completing TCP protocol proxy through the SSH -R protocol. In this mode, there is no need to depend on frpc.&lt;/p&gt;&#xA;&lt;p&gt;SSH reverse tunnel proxy and proxying SSH ports through frp are two different concepts. SSH reverse tunnel proxy is essentially using ssh client to connect to frps to complete basic reverse proxy when you don&amp;rsquo;t want to use frpc.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Virtual Network (VirtualNet)</title>
      <link>/frpdoc/en/docs/features/common/virtualnet/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/frpdoc/en/docs/features/common/virtualnet/</guid>
      <description>&lt;p&gt;&lt;em&gt;Alpha feature, added in v0.62.0&lt;/em&gt;&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: VirtualNet is an Alpha stage feature that is currently unstable. Its configuration methods and functionality may change at any time in future versions. Please do not use this feature in production environments; it is only recommended for testing and evaluation purposes.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;The Virtual Network (VirtualNet) feature allows frp to create and manage virtual network connections between clients through TUN interfaces. This feature extends frp&amp;rsquo;s capabilities beyond traditional port forwarding to achieve complete network layer communication.&lt;/p&gt;</description>
    </item>
    <item>
      <title></title>
      <link>/frpdoc/en/index.json</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/frpdoc/en/index.json</guid>
      <description></description>
    </item>
    <item>
      <title>Search Results</title>
      <link>/frpdoc/en/search/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/frpdoc/en/search/</guid>
      <description></description>
    </item>
  </channel>
</rss>
